home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / networking / mail / elm / elm2.4.p23a < prev    next >
Encoding:
Text File  |  1993-08-22  |  96.4 KB  |  3,143 lines

  1. Subject: BETA TEST 2 of elm 2.4 Patch #23a
  2. Summary: This is an official patch for elm 2.4 system.  Please apply it.
  3. Priority: HIGH
  4.  
  5. THIS IS PART 1 OF A 4 PART PATCH
  6.  
  7. THIS PATCH IS IN BETA TEST.  IT IS SUBJECT TO CHANGE.
  8. SAVE YOUR ORIGINAL COPY OF ELM SOURCES SO YOU CAN BACK THIS OUT BEFORE 
  9. APPLYING THE OFFICIAL PATCH
  10.  
  11. Write options to elmrc even if their values are empty strings.
  12. Rationalize code that reads and writes weedouts and alternates.
  13. From: chip%fin@myrddin.sybus.com
  14.  
  15. Correct problem in fetch_alias() with alias record fixup that caused
  16. core dump on machines with pointers larger than int.  This problem
  17. was reported on comp.mail.elm by Richard Eckman and Jim Brown.  Simplify
  18. get_one_alias() by having it use fetch_alias().
  19.  
  20. break_down_tolist() tried to blindly split address lists at "," which
  21. caused bogus results with addreses that had a comma inside a comment
  22. or quoted text, such as "user@domain (Last, First)".  This patch steps
  23. through the address in quanta of RFC-822 tokens when searching for a
  24. delimiting comma.  It also adds "rfc822_toklen()" to the library to
  25. get that length.
  26. From: chip@chinacat.unicom.com (Chip Rosenthal)
  27.  
  28. This fixes a bug in the MIME code.  Include_Part() uses expand_env()
  29. to expand the include file name, but since expand_env() is destructive
  30. [it uses strtok()] the file name gets corrupted, and the "Content-Name"
  31. header can contain a bogus value.  The easy fix would be a one-line
  32. hack to Include_Part to use a temporary buffer.  This patch does not
  33. implement the easy fix.  *Every* place expand_env() is used, its side
  34. effects cause problems.  I think the right fix is to make expand_env()
  35. non-destructive (i.e. have it duplicate the input to a temporary buffer
  36. and work from there).  The attached patch modifies expand_env() in
  37. that manner, and eliminates all of the `copy to a temporary buffer'
  38. calls that precede it throughout elm.
  39. From: chip@chinacat.unicom.com (Chip Rosenthal)
  40.  
  41. I have been repetedly crashing elm 2.4.22 until I discovered that a
  42. test for failing to open the system elmrc file is mising. This could
  43. usefully be added in read_rc.c. Version info and patch follows:
  44. From: "C.R. Ritson" <C.R.Ritson@newcastle.ac.uk>
  45.  
  46. Greatly simplified "lib/striparens.c" to use new rfc822_toklen() routine.
  47. This cut more than 50% out of the object size.  Also added _TEST case.
  48. From: chip@chinacat.unicom.com (Chip Rosenthal)
  49.  
  50. When resyncing aliases from elm, and there was aliases to delete,
  51. the alias.pag file could be corrupted since file_offset wasn't set to zero.
  52. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  53.  
  54. A long-standing bug of handling replies to VMS systems.
  55. Original "From: " -line is of format:
  56.     From: "NAME \"Real Name\"" <USERNAME@vms-system>
  57. (PMDF mailer)
  58.     Anyway,  parse_arpa_who()  strips quotes too cleanly
  59. resulting data:
  60.     NAME \"Real Name\
  61. which, when put into parenthesis, becomes:
  62.     (NAME \"Real Name\)
  63. which in its turn lacks closing `)'
  64. Patch of  lib/parsarpwho.c  fixes that.
  65. strtokq() started one position too late to search for next double-quote (") char.
  66. Another one-off (chops off trailing comment character, quote or not..)  in   src/reply.c
  67. From:    Matti Aarnio <mea@utu.fi>
  68.  
  69. Three changes to expand_env() in src/read_rc.c:  make it non-destructive,
  70. have it return an error code instead of bailing out, and add a buffer
  71. size argument to avoid overwritting the destination.  The first is to
  72. avoid all of the gymnastics Elm needed to go through (and occasionally
  73. forgot to go through) to protect the value handed to expand_env().
  74. The second is because expand_env() was originally written to support
  75. "elmrc" and bailing out was a reasonable thing to do there -- but not
  76. in the other places where it has since been used.  The third is just
  77. a matter of practicing safe source code.
  78.  
  79. This patch changes all invocations to expand_env() to eliminate making
  80. temporary copies (now that the routine is non-destructive) and to pass
  81. in a destination length.  Since expand_env() no longer bails out on
  82. error, a do_expand_env() routine was added to src/read_rc.c handle
  83. this.  Moreover, the error message now gives some indication of what
  84. the problem is rather than just saying "can't expand".
  85.  
  86. Gratitous change to src/editmsg.c renaming filename variables to
  87. clarify the purpose.
  88. From: chip@chinacat.unicom.com (Chip Rosenthal)
  89.  
  90. [ Patch description ]
  91. Update the example elmrc and move a couple out of order variable
  92. descriptions.
  93. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  94.  
  95. Handle reply-to in batch mode.
  96. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  97.  
  98. In fastmail, if environment variable $REPLYTO is set, use it as
  99. default Reply-To.  Also, eliminate unnecessary strlen() calls.
  100. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  101.  
  102. Support aliases both on 64 bit and 32 bit machines at the same time.
  103. From: Dan Mosedale <mosedale@genome.stanford.edu>
  104.  
  105. Spaces in weedout strings wasn't preserved ("From " became "From").
  106. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  107.  
  108. Added text about how the weedout list works w.r.t From: and From_
  109. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  110.  
  111. default_weedlist() can't use pmalloc, because weedout() calls free when
  112. it encounters *clear-weed-list*.
  113. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  114.  
  115. The NLS messages for elm -h output didn't have the -i or -t options.
  116. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  117.  
  118. The message CannotInitErrorExpanding was called CantExpandEnvVar in s_elm.m.
  119. Change it for consistency.
  120. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  121.  
  122. Since it was not intended that varargs.h and stdarg.h were
  123. included simultaneously there may be colliding definitions
  124. on some systems if you use a standard C compiler. If both
  125. of these headers are included the compiler has no way to
  126. know which definitions to use.
  127. From: Jukka Ukkonen <ukkonen@csc.fi>
  128.  
  129. "*clear-weed-list*" in elmrc was wiped out when one saved the options in elm.
  130. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  131.  
  132. When STDC is used on Convex the feof() function is defined as
  133. a true library routine in the header files and moreover the
  134. library routine also leaks royally. It returns always 1!!
  135. So we have to use a macro. Convex naturally does not provide
  136. you with one though if you are using a STDC compiler. So we
  137. have to include one.
  138. From: Jukka Ukkonen <ukkonen@csc.fi>
  139.  
  140. Removed bogus string lockfile.
  141. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  142.  
  143. The last character of a form field gets zapped if more characters than
  144. the field expects are entered.
  145. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  146.  
  147. Patch for Elm 2.4 PL22 to correct handling of SIGWINCH signals on
  148. DecStations with Ultrix 4.2.
  149. The problem was that elm running in an xterm exits silently when the
  150. window is resize. This was caused by incorrect signal handling for BSD.
  151. From: vogt@isa.de
  152.  
  153. Implement new timezone handling.  New file lib/get_tz.c with new timezone
  154. routines.  Added new TZMINS_USE_xxxxxx and TZNAME_USE_xxxxxx configuration
  155. definitions.  Obsoleted TZNAME, ALTCHECK, and TZ_MINUTESWEST configuration
  156. definitions.  Updated Configure.  Modified lib/getarpdate.c and
  157. lib/strftime.c to use new timezone routines.
  158. From: chip@chinacat.unicom.com (Chip Rosenthal)
  159.  
  160. Add proper casts to free() calls to suppress warnings.
  161. Properly cast return types.
  162. From: chip@chinacat.unicom.com (Chip Rosenthal)
  163.  
  164. Added -d option to elmalias.
  165. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  166.  
  167. Elm tries to replace the system toupper() and tolower() on current
  168. BSD systems, which is unnecessary.  Even worse, the replacements
  169. collide during linking with routines in isctype.o.  This patch adds
  170. a Configure test to determine whether replacements are really needed
  171. (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  172. globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  173. there.  Inclusion of <ctype.h> was removed from *all* the individual
  174. files, and the toupper() and tolower() routines in lib/opt_utils.c
  175. were dropped.
  176. From: chip@chinacat.unicom.com (Chip Rosenthal)
  177.  
  178. Fix signal type for 386bsd
  179. From: Scott Mace <smace@freefall.cdrom.com>
  180.  
  181. When an environment variable was given as the tmpdir definition the src
  182. and dest overlapped in expand_env.  This made elm produce a garbage
  183. expansion because expand_env cannot cope with overlapping src and
  184. dest.  I added a new variable raw_temp_dir to keep src and dest not to
  185. overlap.
  186. From: Jukka Ukkonen <ukkonen@csc.fi>
  187.  
  188. I compiled elm 2.4.22 with Purify 2 and fixed some memory leaks and
  189. some reads of unitialized memory.
  190. From: vogt@isa.de
  191.  
  192. A change to answer:s mail command to be like those of elm and filter.
  193. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  194.  
  195. Elm was failing to write an empty "alternatives" list to elmrc.
  196. From: chip@chinacat.unicom.com (Chip Rosenthal)
  197.  
  198. Usage message for elmalias changed.
  199. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  200.  
  201. Correct typo and use hard spaces within quotes in *clear-weed-list* note.
  202. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  203.  
  204. fix where checkalias doesn't fully expand multi-database aliases
  205. From: Steve Wolf <woof@atl.hp.com>
  206.  
  207. The macro ctrl(c) did not work correctly for a DEL character
  208. neither did it make the backward mapping from a control char
  209. to the letter that is normally used with an up-arrow prefix
  210. to represent the control character.
  211. From: Jukka Ukkonen <ukkonen@csc.fi>
  212.  
  213. Don't declare _exit() if <unistd.h> already did it.
  214. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  215.  
  216. Test ANSI_C, not __STDC__ (which is not set on e.g. AIX).
  217. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  218.  
  219. The ANSI version of varargs is "stdarg", not "stdargs".
  220. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  221.  
  222. Added some documentation for textencoding variable.
  223. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  224.  
  225. more purify found errors
  226. From: vogt@isa.de
  227.  
  228. Add missing parens
  229. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  230.  
  231. Fix problem where deleting to previous line caused duplication due to the
  232. file being opened for append (in append mode, all writes are to the end of
  233. file regardless of the file pointer).
  234. From: pdc@lunch.asd.sgi.com (Paul Close)
  235.  
  236. have Writechar() backspace over the left edge of the screen to the end
  237. of the previous line if the current line is not the first line on the
  238. screen.
  239. From: Jukka Ukkonen <ukkonen@csc.fi>
  240.  
  241. Call to expand_env for pager should be call to do_expand_env.
  242. temp_dir not initialized.
  243. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  244.  
  245. Try splitting chown into two calls to set group on systems where
  246. chown of owner is restricted.
  247. From: Syd
  248.  
  249.  
  250. Fix:    From rn, say "| patch -p -N -d DIR", where DIR is your elm source
  251.     directory.  Outside of rn, say "cd DIR; patch -p -N <thisarticle".
  252.     If you don't have the patch program, apply the following by hand,
  253.     or get patch (version 2.0, latest patchlevel).
  254.  
  255.     After patching:
  256.         Apply patches 23b, 23c, 23d next
  257.  
  258.     If patch indicates that patchlevel is the wrong version, you may need
  259.     to apply one or more previous patches, or the patch may already
  260.     have been applied.  See the patchlevel.h file to find out what has or
  261.     has not been applied.  In any event, don't continue with the patch.
  262.  
  263.     If you are missing previous patches they can be obtained from our:
  264.     archive server.
  265.  
  266.     Syd Weinstein
  267.     elm@DSI.COM
  268.  
  269.     The patches are available from the dsinc archive server
  270.     Send the following message to archive-server@DSI.COM for
  271.     a list of available patches:
  272.  
  273.     Subject: patch list
  274.     send index elm
  275.  
  276.  
  277. Index: hdrs/patchlevel.h
  278. Prereq: "22"
  279. *** ../elm2.4/hdrs/patchlevel.h    Sun Jun  6 14:24:45 1993
  280. --- hdrs/patchlevel.h    Sun Aug 22 23:29:04 1993
  281. ***************
  282. *** 1 ****
  283. ! #define PATCHLEVEL "22"
  284. --- 1 ----
  285. ! #define PATCHLEVEL "23beta2"
  286.  
  287. Index: Configure
  288. Prereq: 5.28
  289. *** ../elm2.4/Configure    Sun Jun  6 14:24:46 1993
  290. --- Configure    Sun Aug 22 23:10:46 1993
  291. ***************
  292. *** 8,14 ****
  293.   # and edit it to reflect your system.  Some packages may include samples
  294.   # of config.h for certain machines, so you might look for one of those.)
  295.   #
  296. ! # $Header: /home/syd/elm.rel/RCS/Configure,v 5.28 1993/06/06 18:11:06 syd Exp $
  297.   #
  298.   # Yes, you may rip this off to use in other distribution packages.
  299.   # (Note: this Configure script was generated automatically.  Rather than
  300. --- 8,14 ----
  301.   # and edit it to reflect your system.  Some packages may include samples
  302.   # of config.h for certain machines, so you might look for one of those.)
  303.   #
  304. ! # $Header: /home/syd/elm.rel/RCS/Configure,v 5.35 1993/08/23 03:10:35 syd Exp $
  305.   #
  306.   # Yes, you may rip this off to use in other distribution packages.
  307.   # (Note: this Configure script was generated automatically.  Rather than
  308. ***************
  309. *** 122,129 ****
  310.   execmail=''
  311.   libswanted=''
  312.   c_date=''
  313. - d_altcheck=''
  314.   d_ascii=''
  315.   d_calendar=''
  316.   calendar=''
  317.   d_content=''
  318. --- 122,129 ----
  319.   execmail=''
  320.   libswanted=''
  321.   c_date=''
  322.   d_ascii=''
  323. + d_broke_ctype=''
  324.   d_calendar=''
  325.   calendar=''
  326.   d_content=''
  327. ***************
  328. *** 166,172 ****
  329.   d_newauto=''
  330.   d_noaddfrom=''
  331.   d_usedomain=''
  332. - d_nocheckvalid=''
  333.   d_noxheader=''
  334.   d_pidcheck=''
  335.   d_ptem=''
  336. --- 166,171 ----
  337. ***************
  338. *** 200,207 ****
  339.   tempnamc=''
  340.   d_termio=''
  341.   d_termios=''
  342. - d_tz_min=''
  343. - d_tzname=''
  344.   d_useembed=''
  345.   d_utimbuf=''
  346.   d_vfork=''
  347. --- 199,204 ----
  348. ***************
  349. *** 213,218 ****
  350. --- 210,216 ----
  351.   mydomain=''
  352.   autohostname=''
  353.   i_memory=''
  354. + i_stdarg=''
  355.   i_stdlib=''
  356.   i_time=''
  357.   i_systime=''
  358. ***************
  359. *** 262,267 ****
  360. --- 260,267 ----
  361.   shsharp=''
  362.   sharpbang=''
  363.   tmpdir=''
  364. + tzmins_handling=''
  365. + tzname_handling=''
  366.   use_pmake=''
  367.   xencf=''
  368.   xenlf=''
  369. ***************
  370. *** 818,823 ****
  371. --- 818,857 ----
  372.       calendar="$ans"
  373.   fi
  374.   
  375. + : check to see if the macros are 8-bit clean, ask the user
  376. + :
  377. + $cat <<EOM
  378. + Not all environments are restricted to the ASCII 7-bit character set.
  379. + For example, the ISO 8859/1 (Latin alphabet no. 1) character set,
  380. + consisting of 8 bits and 191 printable characters, is becoming
  381. + more and more common, especially in non-English speaking countries.
  382. + Unfortunately, not all isprint() functions or macros, which ELM
  383. + uses to determine whether a character is printable or not, will
  384. + handle non-ASCII (8-bit) characters properly.  It is suggested that you
  385. + start with this value configured to handle 8-bit characters correctly
  386. + and if there are problems with Elm aborting while displaying messages
  387. + that use extended character sets to reconfigure Elm to only display
  388. + 7-bit characters.
  389. + EOM
  390. + case "$d_ascii" in
  391. +     "$define")   dflt='n';;
  392. +     *)  dflt='y';;
  393. + esac
  394. + echo "  "
  395. + rp="Should Elm assume that isprint() won't break on non-ASCII characters? [$dflt]"
  396. + $echo $n "$rp $c"
  397. + . myread
  398. + case "$ans" in
  399. +     y*) d_ascii="$undef";;
  400. +     *) d_ascii="$define";;
  401. + esac
  402.   : make some quick guesses about what we are up against
  403.   echo " "
  404.   $echo $n "Hmm...  $c"
  405. ***************
  406. *** 846,851 ****
  407. --- 880,890 ----
  408.       echo exit 1 >bsd
  409.       echo exit 1 >usg
  410.       echo exit 1 >v7
  411. +     elif $test "$uname_os" = "HP-UX" ; then
  412. +     echo "Looks like an HP-UX system, but we'll see.."
  413. +     echo exit 1 >bsd
  414. +     echo exit 0 >usg
  415. +     echo exit 1 >v7
  416.       else
  417.       echo "Looks kind of like a BSD system, but we'll see..."
  418.       echo exit 0 >bsd
  419. ***************
  420. *** 901,906 ****
  421. --- 940,1038 ----
  422.   rm -rf foo
  423.   rmlist="$rmlist bsd usg v7 eunice venix xenix"
  424.   
  425. + : find out how to find out full name
  426. + echo " "
  427. + case "$d_berknames" in
  428. + "$define")
  429. +     dflt=y;;
  430. + "$undef")
  431. +     dflt=n;;
  432. + *)
  433. +     if bsd; then
  434. +     dflt=y
  435. +     elif xenix; then
  436. +     dflt=y
  437. +     else
  438. +     dflt=n
  439. +     fi
  440. +     ;;
  441. + esac
  442. + echo "Does your /etc/passwd file keep full names in Berkeley/V7 format (name first"
  443. + $echo $n "thing after ':' in GCOS field)? [$dflt] $c"
  444. + rp="Berkeley/V7 format full name? [$dflt]"
  445. + . myread
  446. + case "$ans" in
  447. +   y*)
  448. +     d_passnames="$define"
  449. +     d_berknames="$define"
  450. +     d_usgnames="$undef"
  451. +     nametype=bsd
  452. +     ;;
  453. +   *)
  454. +     echo " "
  455. +     case "$d_usgnames" in
  456. +     "$define")
  457. +     dflt=y;;
  458. +     "$undef")
  459. +     dflt=n;;
  460. +     *)
  461. +     if usg; then
  462. +         dflt=y
  463. +     else
  464. +         dflt=n
  465. +     fi
  466. +     ;;
  467. +     esac
  468. +     echo "Does your passwd file keep full names in USG format (name sandwiched"
  469. +     $echo $n "between a '-' and a '(')? [$dflt] $c"
  470. +     rp="USG format full name? [$dflt]"
  471. +     . myread
  472. +     case "$ans" in
  473. +       n*)
  474. +     echo "Full name will be taken from ~/.fullname"
  475. +     d_passnames="$undef"
  476. +     d_berknames="$undef"
  477. +     d_usgnames="$undef"
  478. +     nametype=other
  479. +     ;;
  480. +       *)
  481. +     d_passnames="$define"
  482. +     d_berknames="$undef"
  483. +     d_usgnames="$define"
  484. +     nametype=usg
  485. +     ;;
  486. +     esac
  487. +     ;;
  488. + esac
  489. + : see if we have to deal with yellow pages, if so, put sun
  490. + : library first, as the yp password routines must override
  491. + : the c library ones
  492. + if $test -d /usr/etc/yp || $test -d /etc/yp; then
  493. +     if $test "$passcat" = "ypcat passwd"; then
  494. +     dflt=y
  495. +     elif $contains '^\+:' /etc/passwd; then
  496. +     dflt=y
  497. +     else
  498. +     dflt=n
  499. +     fi
  500. +     rp="Are you getting the passwd file via yellow pages? [$dflt]"
  501. +     $echo $n "$rp $c"
  502. +     . myread
  503. +     case "$ans" in
  504. +     y*) passcat='ypcat passwd'
  505. +     case "$libswanted" in
  506. +     '') libswanted='sun c_s';;
  507. +     *)  libswanted=`$echo "$libswanted" | $sed -e 's/sun //g'`
  508. +         libswanted="sun $libswanted";;
  509. +     esac
  510. +     ;;
  511. +     *) passcat='cat /etc/passwd';;
  512. +     esac
  513. + else
  514. +     passcat='cat /etc/passwd'
  515. + fi
  516.   # determine text processor to use, default to troff if found.
  517.   case "$roff" in
  518.   '')
  519. ***************
  520. *** 1305,1403 ****
  521.       d_bsd="$define"
  522.   fi
  523.   
  524. - : find out how to find out full name
  525. - echo " "
  526. - case "$d_berknames" in
  527. - "$define")
  528. -     dflt=y;;
  529. - "$undef")
  530. -     dflt=n;;
  531. - *)
  532. -     if bsd; then
  533. -     dflt=y
  534. -     elif xenix; then
  535. -     dflt=y
  536. -     else
  537. -     dflt=n
  538. -     fi
  539. -     ;;
  540. - esac
  541. - echo "Does your /etc/passwd file keep full names in Berkeley/V7 format (name first"
  542. - $echo $n "thing after ':' in GCOS field)? [$dflt] $c"
  543. - rp="Berkeley/V7 format full name? [$dflt]"
  544. - . myread
  545. - case "$ans" in
  546. -   y*)
  547. -     d_passnames="$define"
  548. -     d_berknames="$define"
  549. -     d_usgnames="$undef"
  550. -     nametype=bsd
  551. -     ;;
  552. -   *)
  553. -     echo " "
  554. -     case "$d_usgnames" in
  555. -     "$define")
  556. -     dflt=y;;
  557. -     "$undef")
  558. -     dflt=n;;
  559. -     *)
  560. -     if usg; then
  561. -         dflt=y
  562. -     else
  563. -         dflt=n
  564. -     fi
  565. -     ;;
  566. -     esac
  567. -     echo "Does your passwd file keep full names in USG format (name sandwiched"
  568. -     $echo $n "between a '-' and a '(')? [$dflt] $c"
  569. -     rp="USG format full name? [$dflt]"
  570. -     . myread
  571. -     case "$ans" in
  572. -       n*)
  573. -     echo "Full name will be taken from ~/.fullname"
  574. -     d_passnames="$undef"
  575. -     d_berknames="$undef"
  576. -     d_usgnames="$undef"
  577. -     nametype=other
  578. -     ;;
  579. -       *)
  580. -     d_passnames="$define"
  581. -     d_berknames="$undef"
  582. -     d_usgnames="$define"
  583. -     nametype=usg
  584. -     ;;
  585. -     esac
  586. -     ;;
  587. - esac
  588. - : see if we have to deal with yellow pages, if so, put sun
  589. - : library first, as the yp password routines must override
  590. - : the c library ones
  591. - if $test -d /usr/etc/yp || $test -d /etc/yp; then
  592. -     if $test "$passcat" = "ypcat passwd"; then
  593. -     dflt=y
  594. -     elif $contains '^\+:' /etc/passwd; then
  595. -     dflt=y
  596. -     else
  597. -     dflt=n
  598. -     fi
  599. -     rp="Are you getting the passwd file via yellow pages? [$dflt]"
  600. -     $echo $n "$rp $c"
  601. -     . myread
  602. -     case "$ans" in
  603. -     y*) passcat='ypcat passwd'
  604. -     case "$libswanted" in
  605. -     '') libswanted='sun c_s';;
  606. -     *)  libswanted=`$echo "$libswanted" | $sed -e 's/sun //g'`
  607. -         libswanted="sun $libswanted";;
  608. -     esac
  609. -     ;;
  610. -     *) passcat='cat /etc/passwd';;
  611. -     esac
  612. - else
  613. -     passcat='cat /etc/passwd'
  614. - fi
  615.   : see what memory models we can support
  616.   case "$models" in
  617.   '')
  618. --- 1437,1442 ----
  619. ***************
  620. *** 1695,1701 ****
  621.   '');;
  622.   *)  set X $cppflags
  623.       cppflags=''
  624. !     for flag do
  625.       case $flag in
  626.       -D*|-I*|-U*) cppflags="$cppflags $flag";;
  627.       esac
  628. --- 1734,1741 ----
  629.   '');;
  630.   *)  set X $cppflags
  631.       cppflags=''
  632. !     for flag
  633. !     do
  634.       case $flag in
  635.       -D*|-I*|-U*) cppflags="$cppflags $flag";;
  636.       esac
  637. ***************
  638. *** 1813,1907 ****
  639.   esac
  640.   libs="$ans"
  641.   
  642. - : check for "existence of altzone"
  643. - echo " "
  644. - case "$d_altcheck" in
  645. - "$define")    ;;
  646. - "$undef")    ;;
  647. - *)
  648. -         echo "Checking to see if altzone exists as a global variable works..."
  649. -         $rm -f try try.o
  650. -         $cat >try.c <<'EOCP'
  651. - main()
  652. -     {
  653. -     long    t;
  654. -     extern    long    altzone;
  655. -     t = altzone;
  656. -     exit(0);
  657. -     }
  658. - EOCP
  659. -         if $cc try.c -o try >/dev/null 2>&1 ; then
  660. -         d_altcheck="$define"
  661. -         echo "Your system supports altzone..."
  662. -         else
  663. -         d_altcheck="$undef"
  664. -         echo "Your system does not support altzone..."
  665. -         fi
  666. -         $rm -f try.c try.o try
  667. -     ;;
  668. - esac
  669. - : check to see if the macros are 8-bit clean, ask the user
  670. - :
  671. - $cat <<EOM
  672. - Not all environments are restricted to the ASCII 7-bit character set.
  673. - For example, the ISO 8859/1 (Latin alphabet no. 1) character set,
  674. - consisting of 8 bits and 191 printable characters, is becoming
  675. - more and more common, especially in non-English speaking countries.
  676. - Unfortunately, not all isprint() functions or macros, which ELM
  677. - uses to determine whether a character is printable or not, will
  678. - handle non-ASCII (8-bit) characters properly.  It is suggested that you
  679. - start with this value configured to handle 8-bit characters correctly
  680. - and if there are problems with Elm aborting while displaying messages
  681. - that use extended character sets to reconfigure Elm to only display
  682. - 7-bit characters.
  683. - EOM
  684. - case "$d_ascii" in
  685. -     "$define")   dflt='n';;
  686. -     *)  dflt='y';;
  687. - esac
  688. - echo "  "
  689. - rp="Should Elm assume that isprint() won't break on non-ASCII characters? [$dflt]"
  690. - $echo $n "$rp $c"
  691. - . myread
  692. - case "$ans" in
  693. -     y*) d_ascii="$undef";;
  694. -     *) d_ascii="$define";;
  695. - esac
  696. - case "$d_content" in
  697. - "$define") dflt=y;;
  698. - "$undef")  dflt=n;;
  699. - *)       dflt=n;;
  700. - esac
  701. - $cat << EOM
  702. - Some modern Mail Transport Agents (mailers) support the Content-Length: header.
  703. - In doing so, they do not wish to have messages escaped to protect 'From ' lines
  704. - in the body of the message, among other strings.  Does the Mail Transport Agent
  705. - in use on this system honor the Content-Length: header?
  706. - EOM
  707. - echo " "
  708. - rp="Honors Content-Length: header? [$dflt]"
  709. - $echo $n "$rp $c"
  710. - . myread
  711. - case "$ans" in
  712. - y*) d_content="$define";;
  713. - *)  d_content="$undef";;
  714. - esac
  715.   : get list of predefined functions in a handy place
  716.   echo " "
  717.   case "$libc" in
  718. --- 1853,1858 ----
  719. ***************
  720. *** 2100,2105 ****
  721. --- 2051,2277 ----
  722.   : 
  723.   : rmlist="$rmlist libc.tmp libc.list"
  724.   : 
  725. + : see how we invoke the C preprocessor
  726. + echo " "
  727. + echo "Now, how can we feed standard input to your C preprocessor..."
  728. + cat <<'EOT' >testcpp.c
  729. + #define ABC abc
  730. + #define XYZ xyz
  731. + ABC.XYZ
  732. + EOT
  733. + echo 'Maybe "'"$cc"' -E" will work...'
  734. + $cc -E <testcpp.c >testcpp.out 2>&1
  735. + : try to force gcc preprocessor if that is the compiler they are using
  736. + case $? in
  737. + 0) cppstdin="$cc -E";;
  738. + *) case "$cc" in
  739. +     *gcc*)
  740. +     cd ..
  741. +     echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  742. +     echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  743. +     chmod 755 cppstdin
  744. +     cppstdin=`pwd`/cppstdin
  745. +     cppminus='';
  746. +     cd UU
  747. +     $cppstdin <testcpp.c >testcpp.out 2>&1
  748. +     ;;
  749. +     esac
  750. +     ;;
  751. + esac
  752. + if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  753. +     echo "Yup, it does."
  754. +     cppstdin="$cc -E"
  755. +     cppminus='';
  756. + else
  757. +     echo 'Nope, maybe "'$cpp'" will work...'
  758. +     $cpp <testcpp.c >testcpp.out 2>&1
  759. +     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  760. +     echo "Yup, it does."
  761. +     cppstdin="$cpp"
  762. +     cppminus='';
  763. +     else
  764. +     echo 'No such luck...maybe "'$cpp' -" will work...'
  765. +     $cpp - <testcpp.c >testcpp.out 2>&1
  766. +     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  767. +         echo "It works!"
  768. +         cppstdin="$cpp"
  769. +         cppminus='-';
  770. +     else
  771. +         echo 'Nixed again...maybe "'"$cc"' -E -" will work...'
  772. +         $cc -E - <testcpp.c >testcpp.out 2>&1
  773. +         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  774. +         echo "Hooray, it works!  I was beginning to wonder."
  775. +         cppstdin="$cc -E"
  776. +         cppminus='-';
  777. +         else
  778. +         echo 'Nope...maybe "'"$cc"' -P" will work...'
  779. +         $cc -P <testcpp.c >testcpp.out 2>&1
  780. +         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  781. +             echo "Yup, that does."
  782. +             cppstdin="$cc -P"
  783. +             cppminus='';
  784. +         else
  785. +             echo 'Nope...maybe "'"$cc"' -P -" will work...'
  786. +             $cc -P - <testcpp.c >testcpp.out 2>&1
  787. +             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  788. +             echo "Yup, that does."
  789. +             cppstdin="$cc -P"
  790. +             cppminus='-';
  791. +             else
  792. +             echo 'Hmm...perhaps you already told me...'
  793. +             case "$cppstdin" in
  794. +             '') ;;
  795. +             *) $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1;;
  796. +             esac
  797. +             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  798. +                 echo "Hooray, you did!  I was beginning to wonder."
  799. +             else
  800. +                 echo 'Uh-uh.  Time to get fancy...'
  801. +                 cd ..
  802. +                 echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  803. +                 echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  804. +                 chmod 755 cppstdin
  805. +                 cppstdin=`pwd`/cppstdin
  806. +                 cppminus='';
  807. +                 cd UU
  808. +                 $cppstdin <testcpp.c >testcpp.out 2>&1
  809. +                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  810. +                 echo "Eureka!."
  811. +                 else
  812. +                 dflt=blurfl
  813. +                 $echo $n "No dice.  I can't find a C preprocessor.  Name one: $c"
  814. +                 rp='Name a C preprocessor:'
  815. +                 . myread
  816. +                 cppstdin="$ans"
  817. +                 $cppstdin <testcpp.c >testcpp.out 2>&1
  818. +                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  819. +                     echo "OK, that will do."
  820. +                 else
  821. +                     echo "Sorry, I can't get that to work.  Go find one."
  822. +                     exit 1
  823. +                 fi
  824. +                 fi
  825. +             fi
  826. +             fi
  827. +         fi
  828. +         fi
  829. +     fi
  830. +     fi
  831. + fi
  832. + rm -f testcpp.c testcpp.out
  833. + : get C preprocessor symbols handy
  834. + echo " "
  835. + echo $attrlist | $tr ' ' '\012' >Cppsym.know
  836. + $cat <<EOSS >Cppsym
  837. + $startsh
  838. + case "\$1" in
  839. + -l) list=true
  840. +     shift
  841. +     ;;
  842. + esac
  843. + unknown=''
  844. + case "\$list\$#" in
  845. + 1|2)
  846. +     for sym 
  847. +     do
  848. +     if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
  849. +         exit 0
  850. +     elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
  851. +         :
  852. +     else
  853. +         unknown="\$unknown \$sym"
  854. +     fi
  855. +     done
  856. +     set X \$unknown
  857. +     shift
  858. +     ;;
  859. + esac
  860. + case \$# in
  861. + 0) exit 1;;
  862. + esac
  863. + echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
  864. + #ifdef \1\\
  865. + exit 0; _ _ _ _\1\\     \1\\
  866. + #endif\\
  867. + /' >/tmp/Cppsym\$\$
  868. + echo exit 1 >>/tmp/Cppsym\$\$
  869. + $cppstdin $cppminus </tmp/Cppsym\$\$ >/tmp/Cppsym2\$\$
  870. + case "\$list" in
  871. + true) awk 'NF > 5 {print substr(\$6,2,100)}' </tmp/Cppsym2\$\$ ;;
  872. + *)
  873. +     sh /tmp/Cppsym2\$\$
  874. +     status=\$?
  875. +     ;;
  876. + esac
  877. + $rm -f /tmp/Cppsym\$\$ /tmp/Cppsym2\$\$
  878. + exit \$status
  879. + EOSS
  880. + chmod +x Cppsym
  881. + $eunicefix Cppsym
  882. + echo "Your C preprocessor defines the following symbols:"
  883. + Cppsym -l $attrlist >Cppsym.true
  884. + cat Cppsym.true
  885. + rmlist="$rmlist Cppsym Cppsym.know Cppsym.true"
  886. + : check for broken toupper/tolower
  887. + $echo ' '
  888. + case "$d_broke_ctype" in
  889. + "$define") ;;
  890. + "$undef") ;;
  891. + *)
  892. +     $echo "Testing your \"ctype\" conversion routines..."
  893. +     d_broke_ctype="$define"
  894. +     $cat >try.c <<'EOF'
  895. + #include <stdio.h>
  896. + #include <ctype.h>
  897. + #define my_tolower(c)    (isupper(c) ? (c) - 'A' + 'a' : (c))
  898. + #define my_toupper(c)    (islower(c) ? (c) - 'a' + 'A' : (c))
  899. + main()
  900. + {
  901. +     int i;
  902. +     for (i = 1 ; i <= 0x7F ; ++i) {
  903. +     if (my_tolower(i) != tolower(i) || my_toupper(i) != toupper(i))
  904. +         exit(1);
  905. +     }
  906. +     exit(0);
  907. + }
  908. + EOF
  909. +     $cc $ccflags -o try try.c >/dev/null 2>&1 \
  910. +     && ./try >/dev/null 2>&1 && d_broke_ctype="$undef"
  911. +     rm -f try.c try.o try core
  912. +     ;;
  913. + esac
  914. + case "$d_broke_ctype" in
  915. + "$define")    $echo "Using our own \"ctype\" conversions." ;;
  916. + "$undef")    $echo "Using standard system \"ctype\" conversions." ;;
  917. + esac
  918. + case "$d_content" in
  919. + "$define") dflt=y;;
  920. + "$undef")  dflt=n;;
  921. + *)       dflt=n;;
  922. + esac
  923. + $cat << EOM
  924. + Some modern Mail Transport Agents (mailers) support the Content-Length: header.
  925. + In doing so, they do not wish to have messages escaped to protect 'From ' lines
  926. + in the body of the message, among other strings.  Does the Mail Transport Agent
  927. + in use on this system honor the Content-Length: header?
  928. + EOM
  929. + echo " "
  930. + rp="Honors Content-Length: header? [$dflt]"
  931. + $echo $n "$rp $c"
  932. + . myread
  933. + case "$ans" in
  934. + y*) d_content="$define";;
  935. + *)  d_content="$undef";;
  936. + esac
  937.   : see if crypt exists
  938.   echo " "
  939.   if $contains '^crypt$' libc.list >/dev/null 2>&1; then
  940. ***************
  941. *** 2678,2684 ****
  942.   : index or strcpy
  943.   echo " "
  944.   case "$d_index" in
  945. ! n) dflt=n;;
  946.   *) dflt=y;;
  947.   esac
  948.   if $contains '^index$' libc.list >/dev/null 2>&1 ; then
  949. --- 2850,2856 ----
  950.   : index or strcpy
  951.   echo " "
  952.   case "$d_index" in
  953. ! "$define") dflt=n;;
  954.   *) dflt=y;;
  955.   esac
  956.   if $contains '^index$' libc.list >/dev/null 2>&1 ; then
  957. ***************
  958. *** 2913,2918 ****
  959. --- 3085,3094 ----
  960.           rp="$ispell_path options: [$dflt]"
  961.           . myread
  962.           ispell_options=$ans;
  963. +         case "$ispell_options" in
  964. +         'none') ispell_options=''
  965. +              ;;
  966. +         esac
  967.           ;;
  968.   esac
  969.   : see if locale.h is in /usr/include
  970. ***************
  971. *** 3178,3219 ****
  972.   
  973.   
  974.   if $test -f "$sendmail"; then
  975. !     echo "You're running sendmail.  Setting noaddfrom, nocheckvalid, usedomain"
  976.       d_noaddfrom="$define"
  977. -     d_nocheckvalid="$define"
  978.       d_usedomain="$undef"
  979.   elif $test -f "$submit"; then
  980. !     echo "You're running submit with MMDF.  Setting noaddfrom, nocheckvalid, usedomain"
  981.       d_noaddfrom="$undef"
  982. -     d_nocheckvalid="$define"
  983.       d_usedomain="$define"
  984.   elif $test -f "$execmail" -a "$d_mmdf" = "$define"; then
  985. !     echo "You're running execmail with MMDF.  Setting noaddfrom, nocheckvalid, usedomain"
  986.       d_noaddfrom="$undef"
  987. -     d_nocheckvalid="$define"
  988.       d_usedomain="$undef"
  989.   else
  990. -     case "$d_nocheckvalid" in
  991. -     "$define") dflt=n;;
  992. -     "$undef")  dflt=y;;
  993. -     *)       dflt=y;;
  994. -     esac
  995. -     $cat << EOM
  996. - Since you're not running sendmail or submit, should I check local user entered
  997. - addresses against the valid mailboxes on this system?
  998. - EOM
  999. -     echo " "
  1000. -     rp="Would you like to check local addresses? [$dflt]"
  1001. -     $echo $n "$rp $c"
  1002. -     . myread
  1003. -     case "$ans" in
  1004. -     y*) d_nocheckvalid="$undef";;
  1005. -     *)  d_nocheckvalid="$define";;
  1006. -     esac
  1007.       if $test "$d_internet" = "$define"; then
  1008.           case "$d_usedomain" in
  1009.           "$define") dflt=y;;
  1010. --- 3354,3371 ----
  1011.   
  1012.   
  1013.   if $test -f "$sendmail"; then
  1014. !     echo "You're running sendmail.  Setting noaddfrom, usedomain"
  1015.       d_noaddfrom="$define"
  1016.       d_usedomain="$undef"
  1017.   elif $test -f "$submit"; then
  1018. !     echo "You're running submit with MMDF.  Setting noaddfrom, usedomain"
  1019.       d_noaddfrom="$undef"
  1020.       d_usedomain="$define"
  1021.   elif $test -f "$execmail" -a "$d_mmdf" = "$define"; then
  1022. !     echo "You're running execmail with MMDF.  Setting noaddfrom, usedomain"
  1023.       d_noaddfrom="$undef"
  1024.       d_usedomain="$undef"
  1025.   else
  1026.       if $test "$d_internet" = "$define"; then
  1027.           case "$d_usedomain" in
  1028.           "$define") dflt=y;;
  1029. ***************
  1030. *** 3333,3500 ****
  1031.       fi
  1032.   fi
  1033.   
  1034. - : see how we invoke the C preprocessor
  1035. - echo " "
  1036. - echo "Now, how can we feed standard input to your C preprocessor..."
  1037. - cat <<'EOT' >testcpp.c
  1038. - #define ABC abc
  1039. - #define XYZ xyz
  1040. - ABC.XYZ
  1041. - EOT
  1042. - echo 'Maybe "'"$cc"' -E" will work...'
  1043. - $cc -E <testcpp.c >testcpp.out 2>&1
  1044. - : try to force gcc preprocessor if that is the compiler they are using
  1045. - case $? in
  1046. - 0) cppstdin="$cc -E";;
  1047. - *) case "$cc" in
  1048. -     *gcc*)
  1049. -     cd ..
  1050. -     echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  1051. -     echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  1052. -     chmod 755 cppstdin
  1053. -     cppstdin=`pwd`/cppstdin
  1054. -     cppminus='';
  1055. -     cd UU
  1056. -     $cppstdin <testcpp.c >testcpp.out 2>&1
  1057. -     ;;
  1058. -     esac
  1059. -     ;;
  1060. - esac
  1061. - if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1062. -     echo "Yup, it does."
  1063. -     cppstdin="$cc -E"
  1064. -     cppminus='';
  1065. - else
  1066. -     echo 'Nope, maybe "'$cpp'" will work...'
  1067. -     $cpp <testcpp.c >testcpp.out 2>&1
  1068. -     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1069. -     echo "Yup, it does."
  1070. -     cppstdin="$cpp"
  1071. -     cppminus='';
  1072. -     else
  1073. -     echo 'No such luck...maybe "'$cpp' -" will work...'
  1074. -     $cpp - <testcpp.c >testcpp.out 2>&1
  1075. -     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1076. -         echo "It works!"
  1077. -         cppstdin="$cpp"
  1078. -         cppminus='-';
  1079. -     else
  1080. -         echo 'Nixed again...maybe "'"$cc"' -E -" will work...'
  1081. -         $cc -E - <testcpp.c >testcpp.out 2>&1
  1082. -         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1083. -         echo "Hooray, it works!  I was beginning to wonder."
  1084. -         cppstdin="$cc -E"
  1085. -         cppminus='-';
  1086. -         else
  1087. -         echo 'Nope...maybe "'"$cc"' -P" will work...'
  1088. -         $cc -P <testcpp.c >testcpp.out 2>&1
  1089. -         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1090. -             echo "Yup, that does."
  1091. -             cppstdin="$cc -P"
  1092. -             cppminus='';
  1093. -         else
  1094. -             echo 'Nope...maybe "'"$cc"' -P -" will work...'
  1095. -             $cc -P - <testcpp.c >testcpp.out 2>&1
  1096. -             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1097. -             echo "Yup, that does."
  1098. -             cppstdin="$cc -P"
  1099. -             cppminus='-';
  1100. -             else
  1101. -             echo 'Hmm...perhaps you already told me...'
  1102. -             case "$cppstdin" in
  1103. -             '') ;;
  1104. -             *) $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1;;
  1105. -             esac
  1106. -             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1107. -                 echo "Hooray, you did!  I was beginning to wonder."
  1108. -             else
  1109. -                 echo 'Uh-uh.  Time to get fancy...'
  1110. -                 cd ..
  1111. -                 echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  1112. -                 echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  1113. -                 chmod 755 cppstdin
  1114. -                 cppstdin=`pwd`/cppstdin
  1115. -                 cppminus='';
  1116. -                 cd UU
  1117. -                 $cppstdin <testcpp.c >testcpp.out 2>&1
  1118. -                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1119. -                 echo "Eureka!."
  1120. -                 else
  1121. -                 dflt=blurfl
  1122. -                 $echo $n "No dice.  I can't find a C preprocessor.  Name one: $c"
  1123. -                 rp='Name a C preprocessor:'
  1124. -                 . myread
  1125. -                 cppstdin="$ans"
  1126. -                 $cppstdin <testcpp.c >testcpp.out 2>&1
  1127. -                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1128. -                     echo "OK, that will do."
  1129. -                 else
  1130. -                     echo "Sorry, I can't get that to work.  Go find one."
  1131. -                     exit 1
  1132. -                 fi
  1133. -                 fi
  1134. -             fi
  1135. -             fi
  1136. -         fi
  1137. -         fi
  1138. -     fi
  1139. -     fi
  1140. - fi
  1141. - rm -f testcpp.c testcpp.out
  1142. - : get C preprocessor symbols handy
  1143. - echo " "
  1144. - echo $attrlist | $tr ' ' '\012' >Cppsym.know
  1145. - $cat <<EOSS >Cppsym
  1146. - $startsh
  1147. - case "\$1" in
  1148. - -l) list=true
  1149. -     shift
  1150. -     ;;
  1151. - esac
  1152. - unknown=''
  1153. - case "\$list\$#" in
  1154. - 1|2)
  1155. -     for sym do
  1156. -     if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
  1157. -         exit 0
  1158. -     elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
  1159. -         :
  1160. -     else
  1161. -         unknown="\$unknown \$sym"
  1162. -     fi
  1163. -     done
  1164. -     set X \$unknown
  1165. -     shift
  1166. -     ;;
  1167. - esac
  1168. - case \$# in
  1169. - 0) exit 1;;
  1170. - esac
  1171. - echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
  1172. - #ifdef \1\\
  1173. - exit 0; _ _ _ _\1\\     \1\\
  1174. - #endif\\
  1175. - /' >/tmp/Cppsym\$\$
  1176. - echo exit 1 >>/tmp/Cppsym\$\$
  1177. - $cppstdin $cppminus </tmp/Cppsym\$\$ >/tmp/Cppsym2\$\$
  1178. - case "\$list" in
  1179. - true) awk 'NF > 5 {print substr(\$6,2,100)}' </tmp/Cppsym2\$\$ ;;
  1180. - *)
  1181. -     sh /tmp/Cppsym2\$\$
  1182. -     status=\$?
  1183. -     ;;
  1184. - esac
  1185. - $rm -f /tmp/Cppsym\$\$ /tmp/Cppsym2\$\$
  1186. - exit \$status
  1187. - EOSS
  1188. - chmod +x Cppsym
  1189. - $eunicefix Cppsym
  1190. - echo "Your C preprocessor defines the following symbols:"
  1191. - Cppsym -l $attrlist >Cppsym.true
  1192. - cat Cppsym.true
  1193. - rmlist="$rmlist Cppsym Cppsym.know Cppsym.true"
  1194.   : see if there is a putenv
  1195.   set putenv d_putenv
  1196.   eval $inlibc
  1197. --- 3485,3490 ----
  1198. ***************
  1199. *** 3840,3951 ****
  1200.       fi
  1201.   fi
  1202.   
  1203. - : see if we should include time.h, sys/time.h, or both
  1204. - cat <<'EOM'
  1205. -   
  1206. - Testing to see if we should include <time.h>, <sys/time.h> or both.
  1207. - I'm now running the test program...
  1208. - EOM
  1209. - $cat >try.c <<'EOCP'
  1210. - #ifdef I_TIME
  1211. - #include <time.h>
  1212. - #endif
  1213. - #ifdef I_SYSTIME
  1214. - #ifdef SYSTIMEKERNEL
  1215. - #define KERNEL
  1216. - #endif
  1217. - #include <sys/time.h>
  1218. - #endif
  1219. - main()
  1220. - {
  1221. -     struct tm foo;
  1222. - #ifdef S_TIMEVAL
  1223. -     struct timeval bar;
  1224. - #endif
  1225. -     if (foo.tm_sec == foo.tm_sec)
  1226. -     exit(0);
  1227. - #ifdef S_TIMEVAL
  1228. -     if (bar.tv_sec == bar.tv_sec)
  1229. -     exit(0);
  1230. - #endif
  1231. -     exit(1);
  1232. - }
  1233. - EOCP
  1234. - flags=''
  1235. - for s_timeval in '-DS_TIMEVAL' ''; do
  1236. -     for d_systimekernel in '' '-DSYSTIMEKERNEL'; do
  1237. -     for i_time in '-DI_TIME' ''; do
  1238. -         for i_systime in '-DI_SYSTIME' ''; do
  1239. -         case "$flags" in
  1240. -         '') echo "Trying $i_time $i_systime $d_systimekernel $s_timeval"
  1241. -             if $cc $ccflags $i_time $i_systime $d_systimekernel $s_timeval \
  1242. -                 try.c -o try >/dev/null 2>&1 ; then
  1243. -             set X $i_time $i_systime $d_systimekernel $s_timeval
  1244. -             shift
  1245. -             flags="$*"
  1246. -             echo "Succeeded with $flags"
  1247. -             fi
  1248. -             ;;
  1249. -         esac
  1250. -         done
  1251. -     done
  1252. -     done
  1253. - done
  1254. - case "$flags" in
  1255. - *SYSTIMEKERNEL*) d_systimekernel="$define";;
  1256. - *) d_systimekernel="$undef";;
  1257. - esac
  1258. - case "$flags" in
  1259. - *I_TIME*) i_time="$define";;
  1260. - *) i_time="$undef";;
  1261. - esac
  1262. - case "$flags" in
  1263. - *I_SYSTIME*) i_systime="$define";;
  1264. - *) i_systime="$undef";;
  1265. - esac
  1266. - $rm -f try.c try
  1267. - : see if there is a tzname
  1268. - set tzname d_tzname
  1269. - eval $inlibc
  1270. - if $test "$d_tzname" = "$undef"; then
  1271. -     set _tzname d_tzname
  1272. -     eval $inlibc
  1273. - fi
  1274. - timeincl=""
  1275. - if $test "$i_time" = define ; then
  1276. -     timeincl="/usr/include/time.h"
  1277. - fi
  1278. - if $test "$i_systime" = define ; then
  1279. -     timeincl="$timeincl /usr/include/sys/time.h"
  1280. - fi
  1281. - $cat $timeincl /dev/null | $cppstdin $cppminus > try.c 2>&1
  1282. - if $contains 'tz_minuteswest' try.c > /dev/null 2>&1 ; then
  1283. -     echo "You have tz_minuteswest defined in $timeincl rather than timezone."
  1284. -     d_tz_min="$define"
  1285. - else
  1286. -     echo "You have timezone defined in $timeincl rather than tz_minuteswest."
  1287. -     d_tz_min="$undef"
  1288. - fi
  1289. - #    try alternate test for nm commands that have problems
  1290. - #    with data items being parsed
  1291. - if Cppsym ultrix ; then
  1292. -     echo "running Ultrix, will not test for tzname in $timeincl"
  1293. - else
  1294. -     if $test "$d_tzname" = "$undef"; then
  1295. -     if $contains tzname try.c >/dev/null 2>&1 ; then
  1296. -         echo "tzname found in $timeincl"
  1297. -         d_tzname="$define"
  1298. -     fi
  1299. -     fi
  1300. - fi
  1301. - $rm -f try.c
  1302.   : check for valid reply/to fields
  1303.   case "$d_useembed" in
  1304.   "$define")    dflt=y;;
  1305. --- 3830,3835 ----
  1306. ***************
  1307. *** 4018,4023 ****
  1308. --- 3902,3972 ----
  1309.           ;;
  1310.   *)        d_usegetdom="$undef";;
  1311.   esac;
  1312. + : see if we should include time.h, sys/time.h, or both
  1313. + cat <<'EOM'
  1314. +   
  1315. + Testing to see if we should include <time.h>, <sys/time.h> or both.
  1316. + I'm now running the test program...
  1317. + EOM
  1318. + $cat >try.c <<'EOCP'
  1319. + #ifdef I_TIME
  1320. + #include <time.h>
  1321. + #endif
  1322. + #ifdef I_SYSTIME
  1323. + #ifdef SYSTIMEKERNEL
  1324. + #define KERNEL
  1325. + #endif
  1326. + #include <sys/time.h>
  1327. + #endif
  1328. + main()
  1329. + {
  1330. +     struct tm foo;
  1331. + #ifdef S_TIMEVAL
  1332. +     struct timeval bar;
  1333. + #endif
  1334. +     if (foo.tm_sec == foo.tm_sec)
  1335. +     exit(0);
  1336. + #ifdef S_TIMEVAL
  1337. +     if (bar.tv_sec == bar.tv_sec)
  1338. +     exit(0);
  1339. + #endif
  1340. +     exit(1);
  1341. + }
  1342. + EOCP
  1343. + flags=''
  1344. + for s_timeval in '-DS_TIMEVAL' ''; do
  1345. +     for d_systimekernel in '' '-DSYSTIMEKERNEL'; do
  1346. +     for i_time in '-DI_TIME' ''; do
  1347. +         for i_systime in '-DI_SYSTIME' ''; do
  1348. +         case "$flags" in
  1349. +         '') echo "Trying $i_time $i_systime $d_systimekernel $s_timeval"
  1350. +             if $cc $ccflags $i_time $i_systime $d_systimekernel $s_timeval \
  1351. +                 try.c -o try >/dev/null 2>&1 ; then
  1352. +             set X $i_time $i_systime $d_systimekernel $s_timeval
  1353. +             shift
  1354. +             flags="$*"
  1355. +             echo "Succeeded with $flags"
  1356. +             fi
  1357. +             ;;
  1358. +         esac
  1359. +         done
  1360. +     done
  1361. +     done
  1362. + done
  1363. + case "$flags" in
  1364. + *SYSTIMEKERNEL*) d_systimekernel="$define";;
  1365. + *) d_systimekernel="$undef";;
  1366. + esac
  1367. + case "$flags" in
  1368. + *I_TIME*) i_time="$define";;
  1369. + *) i_time="$undef";;
  1370. + esac
  1371. + case "$flags" in
  1372. + *I_SYSTIME*) i_systime="$define";;
  1373. + *) i_systime="$undef";;
  1374. + esac
  1375. + $rm -f try.c try
  1376.   : see if utime.h is in includepath
  1377.   echo " "
  1378.   i_utime=`loc utime.h "" /usr/include $includepath`
  1379. ***************
  1380. *** 4049,4054 ****
  1381. --- 3998,4006 ----
  1382.           if $test "`/bin/universe`" = "att" ; then
  1383.           d_utimbuf="$undef"
  1384.           echo "I will use my 'utimbuf' structure..."
  1385. +         else
  1386. +         d_utimbuf="$define"
  1387. +         echo "You have the 'utimbuf' structure..."
  1388.               fi
  1389.       else
  1390.         if $test "$d_utimbuf" != "$define"; then
  1391. ***************
  1392. *** 4133,4138 ****
  1393. --- 4085,4101 ----
  1394.       i_memory="$undef"
  1395.   fi
  1396.   
  1397. + : see if stdarg.h is in includepath
  1398. + echo " "
  1399. + i_stdarg=`loc stdarg.h "" /usr/include $includepath`
  1400. + if $test -n "$i_stdarg"; then
  1401. +     echo "Found <stdarg.h>"
  1402. +     i_stdarg="$define"
  1403. + else
  1404. +     echo "Did not find <stdarg.h>"
  1405. +     i_stdarg="$undef"
  1406. + fi
  1407.   : see if unistd.h is in includepath
  1408.   echo " "
  1409.   i_unistd=`loc unistd.h "" /usr/include $includepath`
  1410. ***************
  1411. *** 4628,4633 ****
  1412. --- 4591,4699 ----
  1413.   else
  1414.       use_pmake=n
  1415.   fi
  1416. + : figure out timezone handling
  1417. + # timezone handling part 1 of 4 - setup test files
  1418. + cp ../lib/get_tz.c try.c 2>/dev/null \
  1419. +     || $echo "Oh no!  I cannot find the \"lib/get_tz.c\" file."
  1420. + cat >defs.h <<EOF
  1421. + #$i_time I_TIME
  1422. + #$i_systime I_SYSTIME
  1423. + #include <stdio.h>
  1424. + #include <sys/types.h>
  1425. + int get_tz_mins();
  1426. + char *get_tz_name();
  1427. + #ifdef TEST_FOR_TZMINS
  1428. + #define TZNAME_USE_TZNAME
  1429. + #ifdef tzname
  1430. + # undef tzname
  1431. + #endif
  1432. + #define tzname tzfoo
  1433. + char *tzfoo[] = { "FOO", "BAR" };
  1434. + main() { printf("%d\n", get_tz_mins((struct tm *)0)); exit(0); }
  1435. + #else
  1436. + main() { printf("%s\n", get_tz_name((struct tm *)0)); exit(0); }
  1437. + #endif
  1438. + EOF
  1439. + # timezone handling part 2 of 4 - timezone offsets configuration
  1440. + $echo " "
  1441. + it_worked=0
  1442. + if $test -f try.c ; then
  1443. +     $echo "Trying to figure out how to get timezone offsets."
  1444. +     dflt_handling=$tzmins_handling
  1445. +     for tzmins_handling in DFLT TM_TZADJ TM_GMTOFF TZAZ_GLOBAL TZ_GLOBAL \
  1446. +         FTIME TIMEOFDAY ERROR ; do
  1447. +     case "$tzmins_handling" in
  1448. +         DFLT)        tzmins_handling=$dflt_handling ;;
  1449. +         ERROR)        tzmins_handling=$dflt_handling ; break ;;
  1450. +         $dflt_handling)    tzmins_handling= ;;
  1451. +     esac
  1452. +     $test "$tzmins_handling" = "" && continue
  1453. +     $echo "Trying -DTZMINS_USE_$tzmins_handling"
  1454. +     $cc -DTZMINS_USE_$tzmins_handling -DTEST_FOR_TZMINS \
  1455. +         $ccflags try.c -o try >/dev/null 2>&1 || continue
  1456. +     ./try >try.out 2>&1 || continue
  1457. +     $echo "Alright!  That seems to have worked."
  1458. +     dflt=y
  1459. +     rp="Are you `cat try.out` mins west of the prime meridian? [$dflt]"
  1460. +     $echo $n "$rp $c"
  1461. +     . myread
  1462. +     case "$ans" in
  1463. +         N*|n*)    $echo "OK...I'll keep trying." ;;
  1464. +         *)    it_worked=1 ; break ;;
  1465. +     esac
  1466. +     done
  1467. + fi
  1468. + if $test $it_worked -ne 1 ; then
  1469. +     $echo "I cannot figure out how to get timezone offsets."
  1470. +     if $test "$tzmins_handling" != "" ; then
  1471. +     $echo "You said \"$tzmins_handling\" worked last time so I'll use that."
  1472. +     else
  1473. +     $echo "You are going to have to manually set \"tzmins_handling\"."
  1474. +     fi
  1475. + fi
  1476. + # timezone handling part 3 of 4 - timezone names configuration
  1477. + $echo " "
  1478. + it_worked=0
  1479. + if $test "$tzmins_handling" != "" -a -f try.c ; then
  1480. +     $echo "Trying to figure out how to get timezone names."
  1481. +     dflt_handling=$tzname_handling
  1482. +     for tzname_handling in DFLT TM_NAME TM_ZONE TZNAME TIMEZONE ERROR ; do
  1483. +     case "$tzname_handling" in
  1484. +         DFLT)        tzname_handling=$dflt_handling ;;
  1485. +         ERROR)        tzname_handling=$dflt_handling ; break ;;
  1486. +         $dflt_handling)    tzname_handling= ;;
  1487. +     esac
  1488. +     $test "$tzname_handling" = "" && continue
  1489. +     $echo "Trying -DTZNAME_USE_$tzname_handling"
  1490. +     $cc -DTZMINS_USE_$tzmins_handling -DTZNAME_USE_$tzname_handling \
  1491. +         $ccflags try.c -o try >/dev/null 2>&1 || continue
  1492. +     ./try >try.out 2>&1 || continue
  1493. +     $echo "Alright!  That seems to have worked."
  1494. +     dflt=y
  1495. +     rp="Is \"`cat try.out`\" your local timezone name? [$dflt]"
  1496. +     $echo $n "$rp $c"
  1497. +     . myread
  1498. +     case "$ans" in
  1499. +         N*|n*)    $echo "OK...I'll keep trying." ;;
  1500. +         *)    it_worked=1 ; break ;;
  1501. +     esac
  1502. +     done
  1503. + fi
  1504. + if $test $it_worked -ne 1 ; then
  1505. +     $echo "I cannot figure out how to get timezone names."
  1506. +     if $test "$tzname_handling" != "" ; then
  1507. +     $echo "You said \"$tzname_handling\" worked last time so I'll use that."
  1508. +     else
  1509. +     $echo "You are going to have to manually set \"tzname_handling\"."
  1510. +     fi
  1511. + fi
  1512. + # timezone handling part 4 of 4 - cleanup
  1513. + $rm -f defs.h try.c try.o try try.out
  1514.   
  1515.   : the "config.over" file can be used to patch configuration changes
  1516.   if test -f ../config.over ; then
  1517. ***************
  1518. *** 4753,4760 ****
  1519.   execmail='$execmail'
  1520.   libswanted='$libswanted'
  1521.   c_date='$c_date'
  1522. - d_altcheck='$d_altcheck'
  1523.   d_ascii='$d_ascii'
  1524.   d_calendar='$d_calendar'
  1525.   calendar='$calendar'
  1526.   d_content='$d_content'
  1527. --- 4819,4826 ----
  1528.   execmail='$execmail'
  1529.   libswanted='$libswanted'
  1530.   c_date='$c_date'
  1531.   d_ascii='$d_ascii'
  1532. + d_broke_ctype='$d_broke_ctype'
  1533.   d_calendar='$d_calendar'
  1534.   calendar='$calendar'
  1535.   d_content='$d_content'
  1536. ***************
  1537. *** 4797,4803 ****
  1538.   d_newauto='$d_newauto'
  1539.   d_noaddfrom='$d_noaddfrom'
  1540.   d_usedomain='$d_usedomain'
  1541. - d_nocheckvalid='$d_nocheckvalid'
  1542.   d_noxheader='$d_noxheader'
  1543.   d_pidcheck='$d_pidcheck'
  1544.   d_ptem='$d_ptem'
  1545. --- 4863,4868 ----
  1546. ***************
  1547. *** 4831,4838 ****
  1548.   tempnamc='$tempnamc'
  1549.   d_termio='$d_termio'
  1550.   d_termios='$d_termios'
  1551. - d_tz_min='$d_tz_min'
  1552. - d_tzname='$d_tzname'
  1553.   d_useembed='$d_useembed'
  1554.   d_utimbuf='$d_utimbuf'
  1555.   d_vfork='$d_vfork'
  1556. --- 4896,4901 ----
  1557. ***************
  1558. *** 4844,4849 ****
  1559. --- 4907,4913 ----
  1560.   mydomain='$mydomain'
  1561.   autohostname='$autohostname'
  1562.   i_memory='$i_memory'
  1563. + i_stdarg='$i_stdarg'
  1564.   i_stdlib='$i_stdlib'
  1565.   i_time='$i_time'
  1566.   i_systime='$i_systime'
  1567. ***************
  1568. *** 4893,4898 ****
  1569. --- 4957,4964 ----
  1570.   shsharp='$shsharp'
  1571.   sharpbang='$sharpbang'
  1572.   tmpdir='$tmpdir'
  1573. + tzmins_handling='$tzmins_handling'
  1574. + tzname_handling='$tzname_handling'
  1575.   use_pmake='$use_pmake'
  1576.   xencf='$xencf'
  1577.   xenlf='$xenlf'
  1578.  
  1579. Index: MANIFEST
  1580. *** ../elm2.4/MANIFEST    Sun Jun  6 14:24:46 1993
  1581. --- MANIFEST    Tue Aug  3 15:20:41 1993
  1582. ***************
  1583. *** 91,96 ****
  1584. --- 91,97 ----
  1585.   lib/expand.c
  1586.   lib/figadrssee.c
  1587.   lib/gcos_name.c
  1588. + lib/get_tz.c
  1589.   lib/getaddrfrm.c
  1590.   lib/getarpdate.c
  1591.   lib/getfullnam.c
  1592. ***************
  1593. *** 119,124 ****
  1594. --- 120,126 ----
  1595.   lib/realfrom.c
  1596.   lib/remfirstwd.c
  1597.   lib/reverse.c
  1598. + lib/rfc822tlen.c
  1599.   lib/safemalloc.c
  1600.   lib/shiftlower.c
  1601.   lib/strfcpy.c
  1602.  
  1603. Index: Patchlist
  1604. *** ../elm2.4/Patchlist    Sun Jun  6 14:24:46 1993
  1605. --- Patchlist    Sun Aug 22 23:36:22 1993
  1606. ***************
  1607. *** 1,4 ****
  1608. --- 1,247 ----
  1609.   =========================================================
  1610. + Patch Set - Patches 23a through 23d: Sun Aug 22 23:36:21 EDT 1993
  1611. + Elm 2.4PL22 -> Elm 2.4PL23
  1612. + Write options to elmrc even if their values are empty strings.
  1613. + Rationalize code that reads and writes weedouts and alternates.
  1614. + From: chip%fin@myrddin.sybus.com
  1615. + Correct problem in fetch_alias() with alias record fixup that caused
  1616. + core dump on machines with pointers larger than int.  This problem
  1617. + was reported on comp.mail.elm by Richard Eckman and Jim Brown.  Simplify
  1618. + get_one_alias() by having it use fetch_alias().
  1619. + break_down_tolist() tried to blindly split address lists at "," which
  1620. + caused bogus results with addreses that had a comma inside a comment
  1621. + or quoted text, such as "user@domain (Last, First)".  This patch steps
  1622. + through the address in quanta of RFC-822 tokens when searching for a
  1623. + delimiting comma.  It also adds "rfc822_toklen()" to the library to
  1624. + get that length.
  1625. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1626. + This fixes a bug in the MIME code.  Include_Part() uses expand_env()
  1627. + to expand the include file name, but since expand_env() is destructive
  1628. + [it uses strtok()] the file name gets corrupted, and the "Content-Name"
  1629. + header can contain a bogus value.  The easy fix would be a one-line
  1630. + hack to Include_Part to use a temporary buffer.  This patch does not
  1631. + implement the easy fix.  *Every* place expand_env() is used, its side
  1632. + effects cause problems.  I think the right fix is to make expand_env()
  1633. + non-destructive (i.e. have it duplicate the input to a temporary buffer
  1634. + and work from there).  The attached patch modifies expand_env() in
  1635. + that manner, and eliminates all of the `copy to a temporary buffer'
  1636. + calls that precede it throughout elm.
  1637. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1638. + I have been repetedly crashing elm 2.4.22 until I discovered that a
  1639. + test for failing to open the system elmrc file is mising. This could
  1640. + usefully be added in read_rc.c. Version info and patch follows:
  1641. + From: "C.R. Ritson" <C.R.Ritson@newcastle.ac.uk>
  1642. + Greatly simplified "lib/striparens.c" to use new rfc822_toklen() routine.
  1643. + This cut more than 50% out of the object size.  Also added _TEST case.
  1644. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1645. + When resyncing aliases from elm, and there was aliases to delete,
  1646. + the alias.pag file could be corrupted since file_offset wasn't set to zero.
  1647. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1648. + A long-standing bug of handling replies to VMS systems.
  1649. + Original "From: " -line is of format:
  1650. +     From: "NAME \"Real Name\"" <USERNAME@vms-system>
  1651. + (PMDF mailer)
  1652. +     Anyway,  parse_arpa_who()  strips quotes too cleanly
  1653. + resulting data:
  1654. +     NAME \"Real Name\
  1655. + which, when put into parenthesis, becomes:
  1656. +     (NAME \"Real Name\)
  1657. + which in its turn lacks closing `)'
  1658. + Patch of  lib/parsarpwho.c  fixes that.
  1659. + strtokq() started one position too late to search for next double-quote (") char.
  1660. + Another one-off (chops off trailing comment character, quote or not..)  in   src/reply.c
  1661. + From:    Matti Aarnio <mea@utu.fi>
  1662. + Three changes to expand_env() in src/read_rc.c:  make it non-destructive,
  1663. + have it return an error code instead of bailing out, and add a buffer
  1664. + size argument to avoid overwritting the destination.  The first is to
  1665. + avoid all of the gymnastics Elm needed to go through (and occasionally
  1666. + forgot to go through) to protect the value handed to expand_env().
  1667. + The second is because expand_env() was originally written to support
  1668. + "elmrc" and bailing out was a reasonable thing to do there -- but not
  1669. + in the other places where it has since been used.  The third is just
  1670. + a matter of practicing safe source code.
  1671. + This patch changes all invocations to expand_env() to eliminate making
  1672. + temporary copies (now that the routine is non-destructive) and to pass
  1673. + in a destination length.  Since expand_env() no longer bails out on
  1674. + error, a do_expand_env() routine was added to src/read_rc.c handle
  1675. + this.  Moreover, the error message now gives some indication of what
  1676. + the problem is rather than just saying "can't expand".
  1677. + Gratitous change to src/editmsg.c renaming filename variables to
  1678. + clarify the purpose.
  1679. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1680. + [ Patch description ]
  1681. + Update the example elmrc and move a couple out of order variable
  1682. + descriptions.
  1683. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1684. + Handle reply-to in batch mode.
  1685. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1686. + In fastmail, if environment variable $REPLYTO is set, use it as
  1687. + default Reply-To.  Also, eliminate unnecessary strlen() calls.
  1688. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1689. + Support aliases both on 64 bit and 32 bit machines at the same time.
  1690. + From: Dan Mosedale <mosedale@genome.stanford.edu>
  1691. + Spaces in weedout strings wasn't preserved ("From " became "From").
  1692. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1693. + Added text about how the weedout list works w.r.t From: and From_
  1694. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1695. + default_weedlist() can't use pmalloc, because weedout() calls free when
  1696. + it encounters *clear-weed-list*.
  1697. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1698. + The NLS messages for elm -h output didn't have the -i or -t options.
  1699. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1700. + The message CannotInitErrorExpanding was called CantExpandEnvVar in s_elm.m.
  1701. + Change it for consistency.
  1702. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1703. + Since it was not intended that varargs.h and stdarg.h were
  1704. + included simultaneously there may be colliding definitions
  1705. + on some systems if you use a standard C compiler. If both
  1706. + of these headers are included the compiler has no way to
  1707. + know which definitions to use.
  1708. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1709. + "*clear-weed-list*" in elmrc was wiped out when one saved the options in elm.
  1710. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1711. + When STDC is used on Convex the feof() function is defined as
  1712. + a true library routine in the header files and moreover the
  1713. + library routine also leaks royally. It returns always 1!!
  1714. + So we have to use a macro. Convex naturally does not provide
  1715. + you with one though if you are using a STDC compiler. So we
  1716. + have to include one.
  1717. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1718. + Removed bogus string lockfile.
  1719. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1720. + The last character of a form field gets zapped if more characters than
  1721. + the field expects are entered.
  1722. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1723. + Patch for Elm 2.4 PL22 to correct handling of SIGWINCH signals on
  1724. + DecStations with Ultrix 4.2.
  1725. + The problem was that elm running in an xterm exits silently when the
  1726. + window is resize. This was caused by incorrect signal handling for BSD.
  1727. + From: vogt@isa.de
  1728. + Implement new timezone handling.  New file lib/get_tz.c with new timezone
  1729. + routines.  Added new TZMINS_USE_xxxxxx and TZNAME_USE_xxxxxx configuration
  1730. + definitions.  Obsoleted TZNAME, ALTCHECK, and TZ_MINUTESWEST configuration
  1731. + definitions.  Updated Configure.  Modified lib/getarpdate.c and
  1732. + lib/strftime.c to use new timezone routines.
  1733. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1734. + Add proper casts to free() calls to suppress warnings.
  1735. + Properly cast return types.
  1736. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1737. + Added -d option to elmalias.
  1738. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1739. + Elm tries to replace the system toupper() and tolower() on current
  1740. + BSD systems, which is unnecessary.  Even worse, the replacements
  1741. + collide during linking with routines in isctype.o.  This patch adds
  1742. + a Configure test to determine whether replacements are really needed
  1743. + (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  1744. + globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  1745. + there.  Inclusion of <ctype.h> was removed from *all* the individual
  1746. + files, and the toupper() and tolower() routines in lib/opt_utils.c
  1747. + were dropped.
  1748. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1749. + Fix signal type for 386bsd
  1750. + From: Scott Mace <smace@freefall.cdrom.com>
  1751. + When an environment variable was given as the tmpdir definition the src
  1752. + and dest overlapped in expand_env.  This made elm produce a garbage
  1753. + expansion because expand_env cannot cope with overlapping src and
  1754. + dest.  I added a new variable raw_temp_dir to keep src and dest not to
  1755. + overlap.
  1756. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1757. + I compiled elm 2.4.22 with Purify 2 and fixed some memory leaks and
  1758. + some reads of unitialized memory.
  1759. + From: vogt@isa.de
  1760. + A change to answer:s mail command to be like those of elm and filter.
  1761. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1762. + Elm was failing to write an empty "alternatives" list to elmrc.
  1763. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1764. + Usage message for elmalias changed.
  1765. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1766. + Correct typo and use hard spaces within quotes in *clear-weed-list* note.
  1767. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1768. + fix where checkalias doesn't fully expand multi-database aliases
  1769. + From: Steve Wolf <woof@atl.hp.com>
  1770. + The macro ctrl(c) did not work correctly for a DEL character
  1771. + neither did it make the backward mapping from a control char
  1772. + to the letter that is normally used with an up-arrow prefix
  1773. + to represent the control character.
  1774. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1775. + Don't declare _exit() if <unistd.h> already did it.
  1776. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1777. + Test ANSI_C, not __STDC__ (which is not set on e.g. AIX).
  1778. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1779. + The ANSI version of varargs is "stdarg", not "stdargs".
  1780. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1781. + Added some documentation for textencoding variable.
  1782. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1783. + more purify found errors
  1784. + From: vogt@isa.de
  1785. + Add missing parens
  1786. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1787. + Fix problem where deleting to previous line caused duplication due to the
  1788. + file being opened for append (in append mode, all writes are to the end of
  1789. + file regardless of the file pointer).
  1790. + From: pdc@lunch.asd.sgi.com (Paul Close)
  1791. + have Writechar() backspace over the left edge of the screen to the end
  1792. + of the previous line if the current line is not the first line on the
  1793. + screen.
  1794. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1795. + Call to expand_env for pager should be call to do_expand_env.
  1796. + temp_dir not initialized.
  1797. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1798. + Try splitting chown into two calls to set group on systems where
  1799. + chown of owner is restricted.
  1800. + From: Syd
  1801. + =========================================================
  1802.   Patch Set - Patches 22 through 22: Sun Jun  6 14:09:37 EDT 1993
  1803.   Elm 2.4PL21 -> Elm 2.4PL22
  1804.   
  1805.  
  1806. Index: config.h.SH
  1807. *** ../elm2.4/config.h.SH    Sat May  8 15:41:40 1993
  1808. --- config.h.SH    Sun Aug 22 23:10:07 1993
  1809. ***************
  1810. *** 107,123 ****
  1811.    */
  1812.   #define        CONFIGURE_DATE    "$c_date"
  1813.   
  1814. - /* ALTCHECK:
  1815. -  *    This symbol, if defined, means that altzone exists.
  1816. -  */
  1817. - #$d_altcheck ALTCHECK        /**/
  1818.   /* ASCII_CTYPE:
  1819.    *    This symbol, if defined, indicates that the ctype functions and
  1820.    *    macros are ASCII specific and not 8-bit clean.
  1821.    */
  1822.   #$d_ascii    ASCII_CTYPE    /**/
  1823.   
  1824.   /* ENABLE_CALENDAR:
  1825.    *    This symbol, if defined, indicates that the calendar feature
  1826.    *    should be supported.
  1827. --- 107,124 ----
  1828.    */
  1829.   #define        CONFIGURE_DATE    "$c_date"
  1830.   
  1831.   /* ASCII_CTYPE:
  1832.    *    This symbol, if defined, indicates that the ctype functions and
  1833.    *    macros are ASCII specific and not 8-bit clean.
  1834.    */
  1835.   #$d_ascii    ASCII_CTYPE    /**/
  1836.   
  1837. + /* BROKE_CTYPE:
  1838. +  *    This symbol, if defined, indicates that toupper and tolower
  1839. +  *    routines/macros are not safe to use.
  1840. +  */
  1841. + #$d_broke_ctype    BROKE_CTYPE    /**/
  1842.   /* ENABLE_CALENDAR:
  1843.    *    This symbol, if defined, indicates that the calendar feature
  1844.    *    should be supported.
  1845. ***************
  1846. *** 307,319 ****
  1847.    *    This symbol, if defined, indicates that elm should add
  1848.    *    the domain name to our address
  1849.    */
  1850. - /* NOCHECK_VALIDNAME:
  1851. -  *    This symbol, if defined, indicates that elm should not
  1852. -  *    check the addresses against mailboxes on this system.
  1853. -  */
  1854.   #$d_noaddfrom    DONT_ADD_FROM /**/
  1855.   #$d_usedomain    USE_DOMAIN /**/
  1856. - #$d_nocheckvalid NOCHECK_VALIDNAME    /**/
  1857.   
  1858.   /* NO_XHEADER:
  1859.    *    This symbol, if defined, will not automatically add "X-Mailer:"
  1860. --- 308,315 ----
  1861. ***************
  1862. *** 469,485 ****
  1863.   
  1864.   #$d_termio    TERMIO        /**/
  1865.   
  1866. - /* TZ_MINUTESWEST:
  1867. -  *    This symbol is defined if this system uses tz_minutes west
  1868. -  *    in time.h instead of timezone.  Only for BSD Systems
  1869. -  */
  1870. - /* TZNAME:
  1871. -  *    This symbol, if defined, indicates that extern char *tzname[] exists.
  1872. -  */
  1873. - #$d_tz_min    TZ_MINUTESWEST     /**/
  1874. - #$d_tzname    TZNAME    /**/
  1875.   /* USE_EMBEDDED_ADDRESSES:
  1876.    *    This symbol, if defined, indicates that replyto: and from:
  1877.    *    headers can be trusted.
  1878. --- 465,470 ----
  1879. ***************
  1880. *** 528,533 ****
  1881. --- 513,524 ----
  1882.    */
  1883.   #$i_memory    I_MEMORY    /**/
  1884.   
  1885. + /* I_STDARG:
  1886. +  *    This symbol, if defined, indicates that the file stdarg.h
  1887. +  *    should be included instead of varargs
  1888. +  */
  1889. + #$i_stdarg    I_STDARG    /**/
  1890.   /* I_STDLIB:
  1891.    *    This symbol, if defined, indicates that the file stdlib.h
  1892.    *    should be included instead of declaring the stdlib routines.
  1893. ***************
  1894. *** 588,593 ****
  1895. --- 579,603 ----
  1896.    */
  1897.   #define    SIGHAND_TYPE    $sigtype
  1898.   
  1899. + /* TZMINS_USE_xxxxxx:
  1900. +  *    Specify how to get timezone offset.  Possible values are:
  1901. +  *         TZMINS_USE_TM_TZADJ    use (struct tm *)->tm_tzadj
  1902. +  *         TZMINS_USE_TM_GMTOFF    use (struct tm *)->tm_gmtoff
  1903. +  *         TZMINS_USE_TZAZ_GLOBAL    use "timezone, altzone" externals
  1904. +  *         TZMINS_USE_TZ_GLOBAL    use "timezone" external
  1905. +  *         TZMINS_USE_FTIME    use ftime() function
  1906. +  *         TZMINS_USE_TIMEOFDAY    use gettimeofday() function
  1907. +  */
  1908. + /* TZNAME_USE_xxxxxx:
  1909. +  *    Specify how to get timezone name.  Possible values are:
  1910. +  *         TZNAME_USE_TM_NAME    use (struct tm *)->tm_name
  1911. +  *         TZNAME_USE_TM_ZONE    use (struct tm *)->tm_zone
  1912. +  *         TZNAME_USE_TZNAME    use "tzname[]" external
  1913. +  *         TZNAME_USE_TIMEZONE    use timezone() function
  1914. +  */
  1915. + #define TZMINS_USE_$tzmins_handling
  1916. + #define TZNAME_USE_$tzname_handling
  1917.   /* XENIX:
  1918.    *    This symbol, if defined, indicates this is a Xenix system,
  1919.    *    for knocking  out the far keyword in selected places.
  1920.  
  1921. Index: doc/Alias.guide
  1922. Prereq: 5.5
  1923. *** ../elm2.4/doc/Alias.guide    Sun Apr 11 21:45:22 1993
  1924. --- doc/Alias.guide    Mon Jul 19 23:02:25 1993
  1925. ***************
  1926. *** 1,4 ****
  1927. ! .\" @(#)$Id: Alias.guide,v 5.5 1993/04/12 01:45:22 syd Exp $
  1928.   .\"
  1929.   .\"  A guide to the ELM alias system and so on.
  1930.   .\"  format with:
  1931. --- 1,4 ----
  1932. ! .\" @(#)$Id: Alias.guide,v 5.7 1993/07/20 03:02:11 syd Exp $
  1933.   .\"
  1934.   .\"  A guide to the ELM alias system and so on.
  1935.   .\"  format with:
  1936. ***************
  1937. *** 11,16 ****
  1938. --- 11,24 ----
  1939.   .\"    Syd Weinstein        elm@DSI.COM (dsinc!elm)
  1940.   .\"
  1941.   .\"  $Log: Alias.guide,v $
  1942. + .\" Revision 5.7  1993/07/20  03:02:11  syd
  1943. + .\" drop useless reference to Elm address validation
  1944. + .\" From: Syd
  1945. + .\"
  1946. + .\" Revision 5.6  1993/07/20  02:16:26  syd
  1947. + .\" Explain that newalias for global takes -g argument
  1948. + .\" From: Syd via request from Manfred Ebery
  1949. + .\"
  1950.   .\" Revision 5.5  1993/04/12  01:45:22  syd
  1951.   .\" Update for quotes
  1952.   .\" From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1953. ***************
  1954. *** 282,289 ****
  1955.   \f2Elm Configuration Guide\f1 for more details on these variables).
  1956.   .sp
  1957.   Simply create the system alias file in the specified directory
  1958. ! as you would a normal alias file, and install it the same way (see the
  1959. ! following section for more details on that).  Voila!!
  1960.   .sp
  1961.   .hn 1 Editing and Installing New Aliases
  1962.   
  1963. --- 290,298 ----
  1964.   \f2Elm Configuration Guide\f1 for more details on these variables).
  1965.   .sp
  1966.   Simply create the system alias file in the specified directory
  1967. ! as you would a normal alias file, and install it using the newalias
  1968. ! command with the -g option (see the following section for more details
  1969. ! on that).  Voila!!
  1970.   .sp
  1971.   .hn 1 Editing and Installing New Aliases
  1972.   
  1973. ***************
  1974. *** 309,316 ****
  1975.   is \*QBut how the heck does this relate to my existing \f2Berkeley Mail\f1
  1976.   aliases and the lower-level \f2sendmail\f1 alias system?\*U  Well,
  1977.   rest assured that if you \f2really\f1 want to have
  1978. ! your aliases down in the transport you can.  No problem.  All you'll
  1979. ! need to do is to turn off the address validation in Elm.
  1980.   .sp
  1981.   And for those ex-\f2Berkeley Mail\f1 fans, you can translate your
  1982.   aliases into the format that Elm wants by running them
  1983. --- 318,324 ----
  1984.   is \*QBut how the heck does this relate to my existing \f2Berkeley Mail\f1
  1985.   aliases and the lower-level \f2sendmail\f1 alias system?\*U  Well,
  1986.   rest assured that if you \f2really\f1 want to have
  1987. ! your aliases down in the transport you can.  No problem.
  1988.   .sp
  1989.   And for those ex-\f2Berkeley Mail\f1 fans, you can translate your
  1990.   aliases into the format that Elm wants by running them
  1991.  
  1992. Index: doc/Config.guid
  1993. Prereq: 5.8
  1994. *** ../elm2.4/doc/Config.guid    Mon Apr 12 00:01:01 1993
  1995. --- doc/Config.guid    Thu Jul 29 22:23:26 1993
  1996. ***************
  1997. *** 1,4 ****
  1998. ! .\" @(#)$Id: Config.guid,v 5.8 1993/04/12 04:00:55 syd Exp $
  1999.   .\"
  2000.   .\"  A guide to the ELM alias system and so on.
  2001.   .\"  format with:
  2002. --- 1,4 ----
  2003. ! .\" @(#)$Id: Config.guid,v 5.9 1993/07/30 02:23:21 syd Exp $
  2004.   .\"
  2005.   .\"  A guide to the ELM alias system and so on.
  2006.   .\"  format with:
  2007. ***************
  2008. *** 11,16 ****
  2009. --- 11,19 ----
  2010.   .\"    Syd Weinstein        elm@DSI.COM (dsinc!elm)
  2011.   .\"
  2012.   .\"  $Log: Config.guid,v $
  2013. + .\" Revision 5.9  1993/07/30  02:23:21  syd
  2014. + .\" fix -q to -g in newalias call
  2015. + .\"
  2016.   .\" Revision 5.8  1993/04/12  04:00:55  syd
  2017.   .\" remove unused ALIAS parameters
  2018.   .\"
  2019. ***************
  2020. *** 378,384 ****
  2021.   then it'll put the current
  2022.   mailbox into this file in the user's home directory.
  2023.   .lp newalias 1.0i
  2024. ! How to install new aliases (note that you MUST have the \f3\-q\f1 option!).
  2025.   .lp readmsg 1.0i
  2026.   What the \f2readmsg\f1 program is installed as.
  2027.   .hu Runtime configuration \(em the global \f2$lib/elm.rc\fP file
  2028. --- 381,387 ----
  2029.   then it'll put the current
  2030.   mailbox into this file in the user's home directory.
  2031.   .lp newalias 1.0i
  2032. ! How to install new aliases (note that you MUST have the \f3\-g\f1 option!).
  2033.   .lp readmsg 1.0i
  2034.   What the \f2readmsg\f1 program is installed as.
  2035.   .hu Runtime configuration \(em the global \f2$lib/elm.rc\fP file
  2036.  
  2037. Index: doc/Ref.guide
  2038. Prereq: 5.25
  2039. *** ../elm2.4/doc/Ref.guide    Thu May 13 23:56:40 1993
  2040. --- doc/Ref.guide    Sun Aug 22 22:53:54 1993
  2041. ***************
  2042. *** 1,4 ****
  2043. ! .\" @(#)$Id: Ref.guide,v 5.25 1993/05/14 03:56:39 syd Exp $
  2044.   .\"
  2045.   .\"  Reference guide to the Elm mail system.
  2046.   .\"  format with
  2047. --- 1,4 ----
  2048. ! .\" @(#)$Id: Ref.guide,v 5.29 1993/08/23 02:53:52 syd Exp $
  2049.   .\"
  2050.   .\"  Reference guide to the Elm mail system.
  2051.   .\"  format with
  2052. ***************
  2053. *** 12,17 ****
  2054. --- 12,35 ----
  2055.   .\"  (C) Copyright 1988-1992 Usenet Community Trust
  2056.   .\"
  2057.   .\"  $Log: Ref.guide,v $
  2058. + .\" Revision 5.29  1993/08/23  02:53:52  syd
  2059. + .\" Added some documentation for textencoding variable.
  2060. + .\" From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  2061. + .\"
  2062. + .\" Revision 5.28  1993/08/10  21:25:09  syd
  2063. + .\" Correct typo and use hard spaces within quotes in *clear-weed-list* note.
  2064. + .\" From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  2065. + .\"
  2066. + .\" Revision 5.27  1993/08/03  18:56:24  syd
  2067. + .\" Added text about how the weedout list works w.r.t From: and From_
  2068. + .\" From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  2069. + .\"
  2070. + .\" Revision 5.26  1993/07/20  02:43:05  syd
  2071. + .\" [ Patch description ]
  2072. + .\" Update the example elmrc and move a couple out of order variable
  2073. + .\" descriptions.
  2074. + .\" From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  2075. + .\"
  2076.   .\" Revision 5.25  1993/05/14  03:56:39  syd
  2077.   .\" Moved the new numeric variables to the Numeric Variables section and
  2078.   .\" applied the quoting/highlight policy to them.
  2079. ***************
  2080. *** 364,377 ****
  2081.   \f3charset\f1. Elm tries to know which character set could display US-ASCII
  2082.   too, but its list of compatible character sets is probably not complete.
  2083.   
  2084. - .lp displaycharset 1.0i
  2085. - This is the character set which is supported by your terminal.
  2086. - The default depends on your site's installation but is usually
  2087. - US-ASCII. For sites with
  2088. - .xw
  2089. - support, ISO-8859-1
  2090. - is a reasonable default.
  2091.   .lp compatcharsets 1.0i
  2092.   This is the list of character sets which are more or less a superset
  2093.   of US-ASCII. This enables Elm to display messages with \f3charset\f1=US-ASCII
  2094. --- 382,387 ----
  2095. ***************
  2096. *** 440,445 ****
  2097. --- 450,463 ----
  2098.   .br
  2099.   z    Z) signature dashes \f2(sigdashes)\f1
  2100.   
  2101. + .lp displaycharset 1.0i
  2102. + This is the character set which is supported by your terminal.
  2103. + The default depends on your site's installation but is usually
  2104. + US-ASCII. For sites with
  2105. + .xw
  2106. + support, ISO-8859-1
  2107. + is a reasonable default.
  2108.   .lp easyeditor+ 1.0i
  2109.   The editor to be used by the \*Q~e\*U escape within the builtin editor.
  2110.   The default value is the value of the configuration variable \f2emacs_editor\f1
  2111. ***************
  2112. *** 693,698 ****
  2113. --- 711,733 ----
  2114.   itself and affects only their order on the index screen.  The
  2115.   default is \f2mailbox\f1 order.
  2116.   
  2117. + .lp textencoding 1.0i
  2118. + This is the value for the
  2119. + \*QContent-Transfer-Encoding:\*U header.
  2120. + The \*QContent-Transfer-Encoding:\*U header is used to tell MIME
  2121. + (Multipurpose Internet Mail Extension) capable mail readers how they
  2122. + should decode your mail.
  2123. + The default depends on your site's installation, but is usually
  2124. + 7bit. Other possible values are 8bit, base64 or
  2125. + quoted-printable (see RFC1341 for details).
  2126. + 7bit and 8bit implies no encoding.
  2127. + .sp
  2128. + .in 1.0i
  2129. + Note that elm doesn't look at this value, it is just copied to your
  2130. + out going mail. If you put base64 or quoted-printable as the value,
  2131. + elm will NOT turn your message in to a base64/quoted-printable
  2132. + encoded message. You will have to do it yourself.
  2133.   .lp tmpdir 1.0i
  2134.   Use this if you want to define your own directory for the temporary
  2135.   file Elm creates while running.  This is only necessary if using the
  2136. ***************
  2137. *** 737,744 ****
  2138.   \&Status:
  2139.   \&X-Mailer:
  2140.   .ft 1
  2141. - .in 0
  2142.   .fi
  2143.   .ne 8
  2144.   .hu Numeric Variables
  2145.   
  2146. --- 772,785 ----
  2147.   \&Status:
  2148.   \&X-Mailer:
  2149.   .ft 1
  2150.   .fi
  2151. + .sp
  2152. + .in 1.0i
  2153. + Note that the \*QFrom\*U entry weeds out both \*QFrom:\*U and the
  2154. + \*QFrom\ \*U headers. If you just want to weed out \*QFrom\ \*U, for example,
  2155. + put a \*Q*clear-weed-list*\*U at the start of the list followed by \*QFrom_\*U
  2156. + or \*QFrom\ \*U.
  2157. + .in 0
  2158.   .ne 8
  2159.   .hu Numeric Variables
  2160.   
  2161. ***************
  2162. *** 941,951 ****
  2163.   Set ON to get a copy of mail you send to a mailing list you are on,
  2164.   otherwise you do not get a copy of such messages.  The default is OFF.
  2165.   
  2166. - .lp names* 1.0i
  2167. - Set OFF to display the primary recipients' addresses on your screen
  2168. - with their full names when you send a message.  Set ON to display only
  2169. - the full names.  The default is ON.
  2170.   .lp movepage 1.0i
  2171.   Set ON to enable commands that move through the folder by pages (see
  2172.   the \*q+\*u, \*q\-\*u, \f2<right>\f1, and \f2<left>\f1 keys in section
  2173. --- 982,987 ----
  2174. ***************
  2175. *** 953,958 ****
  2176. --- 989,999 ----
  2177.   that page of messages.  Set OFF to not alter the current message
  2178.   pointer location when moving through pages.  The default is OFF.
  2179.   
  2180. + .lp names* 1.0i
  2181. + Set OFF to display the primary recipients' addresses on your screen
  2182. + with their full names when you send a message.  Set ON to display only
  2183. + the full names.  The default is ON.
  2184.   .lp noheader 1.0i
  2185.   Set ON to not include the headers of messages when copying a message
  2186.   into the edit buffer for replying or forwarding (see the \f3autocopy\f1
  2187. ***************
  2188. *** 1068,1074 ****
  2189.   .in 0
  2190.   .sp
  2191.   .sp
  2192. ! For a better idea of how this all works, here's my \f2.elm/elmrc\f1
  2193.   file.  While looking through it, notice that you can have lots of
  2194.   comments and blank lines for readability and that you can also use
  2195.   \*Qshell variables\*U and the \*q~\*u (tilde) metacharacter for your home
  2196. --- 1109,1115 ----
  2197.   .in 0
  2198.   .sp
  2199.   .sp
  2200. ! For a better idea of how this all works, here's a sample \f2.elm/elmrc\f1
  2201.   file.  While looking through it, notice that you can have lots of
  2202.   comments and blank lines for readability and that you can also use
  2203.   \*Qshell variables\*U and the \*q~\*u (tilde) metacharacter for your home
  2204. ***************
  2205. *** 1082,1088 ****
  2206.     #
  2207.     # .elm/elmrc \- options file for the ELM mail system
  2208.     #
  2209. !   # Saved automatically by ELM 2.4 for Dave Taylor
  2210.     #
  2211.   
  2212.     # For yes/no settings with ?, ON means yes, OFF means no
  2213. --- 1123,1129 ----
  2214.     #
  2215.     # .elm/elmrc \- options file for the ELM mail system
  2216.     #
  2217. !   # Saved automatically by ELM 2.4 for Elm Development Group
  2218.     #
  2219.   
  2220.     # For yes/no settings with ?, ON means yes, OFF means no
  2221. ***************
  2222. *** 1091,1110 ****
  2223.     calendar = ~/.Agenda
  2224.   
  2225.     # what editor to use ("none" means simulate Berkeley Mail)
  2226.     editor = none
  2227.   
  2228.     # the character to use in the builtin editor for entering commands
  2229.     escape = ~
  2230.   
  2231.     # the full user name for outbound mail
  2232. !   fullname = Dave Taylor
  2233.   
  2234.     # where to save received messages to, default file is "=received"
  2235.     receivedmail = $HOME/Mail/received
  2236.   
  2237.     # where to save my mail to, default directory is "Mail"
  2238. !   maildir = /users/taylor/Mail
  2239.   
  2240.     # program to use for displaying messages (\'builtin\' is recommended)
  2241.     pager = builtin
  2242.   
  2243. --- 1132,1155 ----
  2244.     calendar = ~/.Agenda
  2245.   
  2246.     # what editor to use ("none" means simulate Berkeley Mail)
  2247. +   # \'%s\' can be used as the temporary filename for the outgoing message
  2248.     editor = none
  2249.   
  2250.     # the character to use in the builtin editor for entering commands
  2251.     escape = ~
  2252.   
  2253.     # the full user name for outbound mail
  2254. !   fullname = Elm Development Group
  2255.   
  2256.     # where to save received messages to, default file is "=received"
  2257.     receivedmail = $HOME/Mail/received
  2258.   
  2259.     # where to save my mail to, default directory is "Mail"
  2260. !   maildir = /users/elmdev/Mail
  2261.   
  2262. +   #directory to hold my temporary files to avoid NFS cross mount problems
  2263. +   tmpdir = /users/elmdev/Mail/tmp
  2264.     # program to use for displaying messages (\'builtin\' is recommended)
  2265.     pager = builtin
  2266.   
  2267. ***************
  2268. *** 1114,1121 ****
  2269.     # how to print a message (\'%s\' is the filename)
  2270.     print = lpr \-Plw2 %s
  2271.   
  2272.     # where to save copies of outgoing mail to, default file is "=sent"
  2273. !   sentmail = /users/taylor/Mail/mail.sent
  2274.   
  2275.     # the shell to use for shell escapes
  2276.     shell = /bin/csh
  2277. --- 1159,1169 ----
  2278.     # how to print a message (\'%s\' is the filename)
  2279.     print = lpr \-Plw2 %s
  2280.   
  2281. +   # attribution string for replies (\'%s\' is the author of original message)
  2282. +   attribution = According to %s:
  2283.     # where to save copies of outgoing mail to, default file is "=sent"
  2284. !   sentmail = /users/elmdev/Mail/mail.sent
  2285.   
  2286.     # the shell to use for shell escapes
  2287.     shell = /bin/csh
  2288. ***************
  2289. *** 1129,1140 ****
  2290.     # do we want dashes above signatures? (News 2.11 compatibility and convention)
  2291.     sigdashes = ON
  2292.   
  2293. !   # how to sort folders, "Mailbox" by default
  2294.     sortby = Reverse\-Received
  2295.   
  2296. -   # how to sort the alias list, "Name" by default
  2297. -   aliassortby = Name
  2298.     # should the default be to delete messages we\'ve marked for deletion?
  2299.     alwaysdelete = ON
  2300.   
  2301. --- 1177,1185 ----
  2302.     # do we want dashes above signatures? (News 2.11 compatibility and convention)
  2303.     sigdashes = ON
  2304.   
  2305. !   # how to sort folders, "Reverse Sent" by default
  2306.     sortby = Reverse\-Received
  2307.   
  2308.     # should the default be to delete messages we\'ve marked for deletion?
  2309.     alwaysdelete = ON
  2310.   
  2311. ***************
  2312. *** 1175,1181 ****
  2313.   
  2314.     # should we display the three\-line \'mini\' menu?
  2315.     menu = ON
  2316. !   # would you like a copy of a message you send to an alias you are on???
  2317.     metoo = OFF
  2318.   
  2319.     # when using the page commands (+ \- <NEXT> <PREV>) change the current
  2320. --- 1220,1227 ----
  2321.   
  2322.     # should we display the three\-line \'mini\' menu?
  2323.     menu = ON
  2324. !   # would you like a copy of a message you send to an alias you are on?
  2325.     metoo = OFF
  2326.   
  2327.     # when using the page commands (+ \- <NEXT> <PREV>) change the current
  2328. ***************
  2329. *** 1233,1239 ****
  2330.   
  2331.     # alternative addresses that I could receive mail from (usually a
  2332.     # forwarding mailbox) and don\'t want to have listed...
  2333. !   alternatives = hplabs!taylor  hpldat!taylor  taylor@hplabs  taylor%hpldat
  2334.   .fi
  2335.   .br
  2336.   .ne 5
  2337. --- 1279,1317 ----
  2338.   
  2339.     # alternative addresses that I could receive mail from (usually a
  2340.     # forwarding mailbox) and don\'t want to have listed...
  2341. !   alternatives = dsidev!elmdev  dsirel!elmdev  elmdev@dsidev  elmdev%dsidev
  2342. !   # list of delivery precedences allowed, or empty to allow anything
  2343. !   # precedence may be followed by optional ":priority" specification
  2344. !   precedences = special\-delivery:urgent air\-mail:urgent first\-class bulk junk
  2345. !   # name of Character Set used with MIME text/plain Content\-type
  2346. !   # US\-ASCII is default. Be aware that if you use a national charset
  2347. !   # elm probably needs metamail to display US\-ASCII. Elm tries to
  2348. !   # know if that charset could display US\-ASCII too, but the list
  2349. !   # of us\-ascii compatible charsets is not yet complete
  2350. !   charset=US\-ASCII
  2351. !   # name of Character Set which the display supports. This is independent
  2352. !   # of the above "charset".
  2353. !   displaycharset=US\-ASCII
  2354. !   # list of Character Sets, which are more or less a superset of US\-ASCII
  2355. !   # so we know that we can display messages with charset=US\-ASCII without
  2356. !   # help of metamail
  2357. !   compatcharsets = ISO\-8859\-1 ISO\-8859\-2 ISO\-8859\-3 ISO\-8859\-4 ISO\-8859\-5 ISO\-8859\-6 ISO\-8859\-7 ISO\-8859\-8 ISO\-8859\-9
  2358. !   # would you like to use termcap/terminfo ti/te entries?
  2359. !   usetite = ON
  2360. !   # Value by which message count is incremented while reading a new mailbox.
  2361. !   # Setting this value to a number larger than one will speed up the time it
  2362. !   # takes to read a large mailbox when using a slow terminal.
  2363. !   readmsginc = 5
  2364. !   # time in seconds which Elm will wait after displaying a transient message
  2365. !   # and before erasing it.  Can be 0 or positive integer.
  2366. !   sleepmsg = 2
  2367.   .fi
  2368.   .br
  2369.   .ne 5
  2370.  
  2371. Index: doc/elmalias.1
  2372. *** ../elm2.4/doc/elmalias.1    Sun Apr 11 22:11:17 1993
  2373. --- doc/elmalias.1    Tue Aug  3 15:23:12 1993
  2374. ***************
  2375. *** 10,16 ****
  2376.   .SH SYNOPSIS
  2377.   .B elmalias
  2378.   [
  2379. ! .B \-aenrsuvV
  2380.   ] [
  2381.   .B \-f
  2382.   format ] [ name  ... ]
  2383. --- 10,16 ----
  2384.   .SH SYNOPSIS
  2385.   .B elmalias
  2386.   [
  2387. ! .B \-adenrsuvV
  2388.   ] [
  2389.   .B \-f
  2390.   format ] [ name  ... ]
  2391. ***************
  2392. *** 91,96 ****
  2393. --- 91,103 ----
  2394.   Selects an alternative output format.  The ``Alias'' information is
  2395.   displayed in addition to and preceding the usual ``Address'' information.
  2396.   .\"
  2397. + .\"
  2398. + .\"
  2399. + .IP \fB\-d\fP
  2400. + Turns debugging on. Has no effect unless
  2401. + .I elmalias
  2402. + was compiled with debugging enabled.
  2403. + .\"
  2404.   .\"
  2405.   .\"
  2406.   .IP \fB\-e\fP
  2407.  
  2408. Index: doc/elmrc-info
  2409. Prereq: 5.9
  2410. *** ../elm2.4/doc/elmrc-info    Sun Jun  6 14:24:47 1993
  2411. --- doc/elmrc-info    Sun Aug 22 22:53:55 1993
  2412. ***************
  2413. *** 1,4 ****
  2414. ! #@(#)$Id: elmrc-info,v 5.9 1993/06/06 17:50:52 syd Exp $
  2415.   # Elm Version 2.4
  2416.   # For yes/no settings with ?, ON means yes, OFF means no
  2417.   
  2418. --- 1,4 ----
  2419. ! #@(#)$Id: elmrc-info,v 5.10 1993/08/23 02:53:52 syd Exp $
  2420.   # Elm Version 2.4
  2421.   # For yes/no settings with ?, ON means yes, OFF means no
  2422.   
  2423. ***************
  2424. *** 232,234 ****
  2425. --- 232,239 ----
  2426.   sleepmsg
  2427.   # time in seconds which Elm will wait after displaying a transient message
  2428.   # and before erasing it.  Can be 0 or positive integer.
  2429. + textencoding
  2430. + # Type of encoding to be put into the MIME Content-Transfer-Encoding header.
  2431. + # Usual values are 7bit or 8bit.
  2432. + # NOTE: Elm will not encode your message based on this variable.
  2433.  
  2434. Index: filter/actions.c
  2435. Prereq: 5.6
  2436. *** ../elm2.4/filter/actions.c    Tue Apr 20 21:25:46 1993
  2437. --- filter/actions.c    Tue Aug  3 15:28:40 1993
  2438. ***************
  2439. *** 1,8 ****
  2440.   
  2441. ! static char rcsid[] ="@(#)$Id: actions.c,v 5.6 1993/04/21 01:25:45 syd Exp $";
  2442.   
  2443.   /*******************************************************************************
  2444. !  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
  2445.    *
  2446.    *             Copyright (c) 1988-1992 USENET Community Trust
  2447.    *             Copyright (c) 1986,1987 Dave Taylor
  2448. --- 1,8 ----
  2449.   
  2450. ! static char rcsid[] ="@(#)$Id: actions.c,v 5.8 1993/08/03 19:28:39 syd Exp $";
  2451.   
  2452.   /*******************************************************************************
  2453. !  *  The Elm Mail System  -  $Revision: 5.8 $   $State: Exp $
  2454.    *
  2455.    *             Copyright (c) 1988-1992 USENET Community Trust
  2456.    *             Copyright (c) 1986,1987 Dave Taylor
  2457. ***************
  2458. *** 14,19 ****
  2459. --- 14,35 ----
  2460.    *
  2461.    *******************************************************************************
  2462.    * $Log: actions.c,v $
  2463. +  * Revision 5.8  1993/08/03  19:28:39  syd
  2464. +  * Elm tries to replace the system toupper() and tolower() on current
  2465. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2466. +  * collide during linking with routines in isctype.o.  This patch adds
  2467. +  * a Configure test to determine whether replacements are really needed
  2468. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2469. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2470. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2471. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2472. +  * were dropped.
  2473. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2474. +  *
  2475. +  * Revision 5.7  1993/08/03  19:07:58  syd
  2476. +  * Removed bogus string lockfile.
  2477. +  * From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  2478. +  *
  2479.    * Revision 5.6  1993/04/21  01:25:45  syd
  2480.    * I'm using Elm 2.4.21 under Linux.  Linux has no Bourne shell.  Each
  2481.    * user installs her favorite shell as /bin/sh.  I use Bash 1.12.
  2482. ***************
  2483. *** 61,67 ****
  2484.   
  2485.   #include <stdio.h>
  2486.   #include <pwd.h>
  2487. - #include <ctype.h>
  2488.   #include <fcntl.h>
  2489.   
  2490.   #include "defs.h"
  2491. --- 77,82 ----
  2492. ***************
  2493. *** 83,89 ****
  2494.   
  2495.       FILE *pipefd, *tempfd, *mailfd;
  2496.       int  in_header = TRUE, line_count = 0, mailunit, pid, statusp;
  2497. !     char tempfile[SLEN], mailbox[SLEN], lockfile[SLEN],
  2498.            buffer[VERY_LONG_STRING], *cp;
  2499.   
  2500.       if (verbose && ! log_actions_only && outfd != NULL)
  2501. --- 98,104 ----
  2502.   
  2503.       FILE *pipefd, *tempfd, *mailfd;
  2504.       int  in_header = TRUE, line_count = 0, mailunit, pid, statusp;
  2505. !     char tempfile[SLEN], mailbox[SLEN],
  2506.            buffer[VERY_LONG_STRING], *cp;
  2507.   
  2508.       if (verbose && ! log_actions_only && outfd != NULL)
  2509. ***************
  2510. *** 209,220 ****
  2511.           if (outfd != NULL) {
  2512.             fprintf(outfd, catgets(elm_msg_cat,FilterSet,
  2513.                        FilterCouldntCreateLockFile,
  2514. !              "filter (%s): Couldn't create lock file %s\n"),
  2515. !             date_n_user(), lockfile);
  2516.             fprintf(outfd, catgets(elm_msg_cat,FilterSet,
  2517.                        FilterCantOpenMailBox,
  2518.                "filter (%s): Can't open mailbox %s!\n"),
  2519. !             date_n_user(), lockfile);
  2520.           }
  2521.           if ((mailfd = emergency_local_delivery()) == NULL)
  2522.             exit(1);
  2523. --- 224,235 ----
  2524.           if (outfd != NULL) {
  2525.             fprintf(outfd, catgets(elm_msg_cat,FilterSet,
  2526.                        FilterCouldntCreateLockFile,
  2527. !              "filter (%s): Couldn't create lock file\n"),
  2528. !             date_n_user());
  2529.             fprintf(outfd, catgets(elm_msg_cat,FilterSet,
  2530.                        FilterCantOpenMailBox,
  2531.                "filter (%s): Can't open mailbox %s!\n"),
  2532. !             date_n_user(), mailbox);
  2533.           }
  2534.           if ((mailfd = emergency_local_delivery()) == NULL)
  2535.             exit(1);
  2536.  
  2537. Index: filter/filter.c
  2538. Prereq: 5.5
  2539. *** ../elm2.4/filter/filter.c    Sun Jun  6 14:24:47 1993
  2540. --- filter/filter.c    Tue Aug  3 15:28:40 1993
  2541. ***************
  2542. *** 1,8 ****
  2543.   
  2544. ! static char rcsid[] ="@(#)$Id: filter.c,v 5.5 1993/06/06 17:58:20 syd Exp $";
  2545.   
  2546.   /*******************************************************************************
  2547. !  *  The Elm Mail System  -  $Revision: 5.5 $   $State: Exp $
  2548.    *
  2549.    *             Copyright (c) 1988-1992 USENET Community Trust
  2550.    *             Copyright (c) 1986,1987 Dave Taylor
  2551. --- 1,8 ----
  2552.   
  2553. ! static char rcsid[] ="@(#)$Id: filter.c,v 5.6 1993/08/03 19:28:39 syd Exp $";
  2554.   
  2555.   /*******************************************************************************
  2556. !  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
  2557.    *
  2558.    *             Copyright (c) 1988-1992 USENET Community Trust
  2559.    *             Copyright (c) 1986,1987 Dave Taylor
  2560. ***************
  2561. *** 14,19 ****
  2562. --- 14,31 ----
  2563.    *
  2564.    *******************************************************************************
  2565.    * $Log: filter.c,v $
  2566. +  * Revision 5.6  1993/08/03  19:28:39  syd
  2567. +  * Elm tries to replace the system toupper() and tolower() on current
  2568. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2569. +  * collide during linking with routines in isctype.o.  This patch adds
  2570. +  * a Configure test to determine whether replacements are really needed
  2571. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2572. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2573. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2574. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2575. +  * were dropped.
  2576. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2577. +  *
  2578.    * Revision 5.5  1993/06/06  17:58:20  syd
  2579.    * make white space skipping work for blank or tab
  2580.    *
  2581. ***************
  2582. *** 64,70 ****
  2583.   
  2584.   #include <stdio.h>
  2585.   #include <pwd.h>
  2586. - #include <ctype.h>
  2587.   #include "defs.h"
  2588.   #ifdef I_TIME
  2589.   #  include <time.h>
  2590. --- 76,81 ----
  2591.  
  2592. Index: filter/parse.c
  2593. Prereq: 5.11
  2594. *** ../elm2.4/filter/parse.c    Sun Apr 11 23:04:02 1993
  2595. --- filter/parse.c    Tue Aug  3 15:28:41 1993
  2596. ***************
  2597. *** 1,8 ****
  2598.   
  2599. ! static char rcsid[] ="@(#)$Id: parse.c,v 5.11 1993/04/12 03:04:01 syd Exp $";
  2600.   
  2601.   /*******************************************************************************
  2602. !  *  The Elm Mail System  -  $Revision: 5.11 $   $State: Exp $
  2603.    *
  2604.    *             Copyright (c) 1988-1992 USENET Community Trust
  2605.    *             Copyright (c) 1986,1987 Dave Taylor
  2606. --- 1,8 ----
  2607.   
  2608. ! static char rcsid[] ="@(#)$Id: parse.c,v 5.12 1993/08/03 19:28:39 syd Exp $";
  2609.   
  2610.   /*******************************************************************************
  2611. !  *  The Elm Mail System  -  $Revision: 5.12 $   $State: Exp $
  2612.    *
  2613.    *             Copyright (c) 1988-1992 USENET Community Trust
  2614.    *             Copyright (c) 1986,1987 Dave Taylor
  2615. ***************
  2616. *** 14,19 ****
  2617. --- 14,31 ----
  2618.    *
  2619.    *******************************************************************************
  2620.    * $Log: parse.c,v $
  2621. +  * Revision 5.12  1993/08/03  19:28:39  syd
  2622. +  * Elm tries to replace the system toupper() and tolower() on current
  2623. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2624. +  * collide during linking with routines in isctype.o.  This patch adds
  2625. +  * a Configure test to determine whether replacements are really needed
  2626. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2627. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2628. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2629. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2630. +  * were dropped.
  2631. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2632. +  *
  2633.    * Revision 5.11  1993/04/12  03:04:01  syd
  2634.    * Removed a malloc of a struct condition_rec that is never used.
  2635.    * From: Jan Djarv <Jan.Djarv@sa.erisoft.se>
  2636. ***************
  2637. *** 77,83 ****
  2638.   **/
  2639.   
  2640.   #include <stdio.h>
  2641. - #include <ctype.h>
  2642.   
  2643.   #include "defs.h"
  2644.   #include "filter.h"
  2645. --- 89,94 ----
  2646.  
  2647. Index: filter/regexp.c
  2648. Prereq: 5.6
  2649. *** ../elm2.4/filter/regexp.c    Thu Dec 10 20:45:26 1992
  2650. --- filter/regexp.c    Wed Jun  9 23:12:16 1993
  2651. ***************
  2652. *** 1,8 ****
  2653.   
  2654. ! /* $Id: regexp.c,v 5.6 1992/12/11 01:45:04 syd Exp $ */
  2655.   
  2656.   /*******************************************************************************
  2657. !  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
  2658.    *
  2659.    *             Copyright (c) 1992 USENET Community Trust
  2660.    *******************************************************************************
  2661. --- 1,8 ----
  2662.   
  2663. ! static char rcsid[] = "@(#)$Id: regexp.c,v 5.7 1993/06/10 03:12:10 syd Exp $";
  2664.   
  2665.   /*******************************************************************************
  2666. !  *  The Elm Mail System  -  $Revision: 5.7 $   $State: Exp $
  2667.    *
  2668.    *             Copyright (c) 1992 USENET Community Trust
  2669.    *******************************************************************************
  2670. ***************
  2671. *** 13,18 ****
  2672. --- 13,22 ----
  2673.    *
  2674.    *******************************************************************************
  2675.    * $Log: regexp.c,v $
  2676. +  * Revision 5.7  1993/06/10  03:12:10  syd
  2677. +  * Add missing rcs id lines
  2678. +  * From: Syd
  2679. +  *
  2680.    * Revision 5.6  1992/12/11  01:45:04  syd
  2681.    * remove sys/types.h include, it is now included by defs.h
  2682.    * and this routine includes defs.h or indirectly includes defs.h
  2683.  
  2684. Index: filter/rules.c
  2685. Prereq: 5.7
  2686. *** ../elm2.4/filter/rules.c    Wed Jan 27 14:45:16 1993
  2687. --- filter/rules.c    Tue Aug  3 15:28:42 1993
  2688. ***************
  2689. *** 1,8 ****
  2690.   
  2691. ! static char rcsid[] ="@(#)$Id: rules.c,v 5.7 1993/01/27 19:45:15 syd Exp $";
  2692.   
  2693.   /*******************************************************************************
  2694. !  *  The Elm Mail System  -  $Revision: 5.7 $   $State: Exp $
  2695.    *
  2696.    *             Copyright (c) 1988-1992 USENET Community Trust
  2697.    *             Copyright (c) 1986,1987 Dave Taylor
  2698. --- 1,8 ----
  2699.   
  2700. ! static char rcsid[] ="@(#)$Id: rules.c,v 5.8 1993/08/03 19:28:39 syd Exp $";
  2701.   
  2702.   /*******************************************************************************
  2703. !  *  The Elm Mail System  -  $Revision: 5.8 $   $State: Exp $
  2704.    *
  2705.    *             Copyright (c) 1988-1992 USENET Community Trust
  2706.    *             Copyright (c) 1986,1987 Dave Taylor
  2707. ***************
  2708. *** 14,19 ****
  2709. --- 14,31 ----
  2710.    *
  2711.    *******************************************************************************
  2712.    * $Log: rules.c,v $
  2713. +  * Revision 5.8  1993/08/03  19:28:39  syd
  2714. +  * Elm tries to replace the system toupper() and tolower() on current
  2715. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2716. +  * collide during linking with routines in isctype.o.  This patch adds
  2717. +  * a Configure test to determine whether replacements are really needed
  2718. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2719. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2720. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2721. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2722. +  * were dropped.
  2723. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2724. +  *
  2725.    * Revision 5.7  1993/01/27  19:45:15  syd
  2726.    * Filter turns spaces in quoted strings into _ and then back again. This destroys
  2727.    * any _ that where there in the first place. This patch removes that.
  2728. ***************
  2729. *** 65,71 ****
  2730.   #include <stdio.h>
  2731.   #include "defs.h"
  2732.   #include <pwd.h>
  2733. - #include <ctype.h>
  2734.   #ifdef I_TIME
  2735.   #  include <time.h>
  2736.   #endif
  2737. --- 77,82 ----
  2738.  
  2739. Index: filter/utils.c
  2740. Prereq: 5.3
  2741. *** ../elm2.4/filter/utils.c    Wed Jan 27 14:40:07 1993
  2742. --- filter/utils.c    Tue Aug  3 15:28:42 1993
  2743. ***************
  2744. *** 1,8 ****
  2745.   
  2746. ! static char rcsid[] ="@(#)$Id: utils.c,v 5.3 1993/01/27 19:40:01 syd Exp $";
  2747.   
  2748.   /*******************************************************************************
  2749. !  *  The Elm Mail System  -  $Revision: 5.3 $   $State: Exp $
  2750.    *
  2751.    *             Copyright (c) 1988-1992 USENET Community Trust
  2752.    *             Copyright (c) 1986,1987 Dave Taylor
  2753. --- 1,8 ----
  2754.   
  2755. ! static char rcsid[] ="@(#)$Id: utils.c,v 5.4 1993/08/03 19:28:39 syd Exp $";
  2756.   
  2757.   /*******************************************************************************
  2758. !  *  The Elm Mail System  -  $Revision: 5.4 $   $State: Exp $
  2759.    *
  2760.    *             Copyright (c) 1988-1992 USENET Community Trust
  2761.    *             Copyright (c) 1986,1987 Dave Taylor
  2762. ***************
  2763. *** 14,19 ****
  2764. --- 14,31 ----
  2765.    *
  2766.    *******************************************************************************
  2767.    * $Log: utils.c,v $
  2768. +  * Revision 5.4  1993/08/03  19:28:39  syd
  2769. +  * Elm tries to replace the system toupper() and tolower() on current
  2770. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2771. +  * collide during linking with routines in isctype.o.  This patch adds
  2772. +  * a Configure test to determine whether replacements are really needed
  2773. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2774. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2775. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2776. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2777. +  * were dropped.
  2778. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2779. +  *
  2780.    * Revision 5.3  1993/01/27  19:40:01  syd
  2781.    * I implemented a change to filter's default verbose message format
  2782.    * including %x %X style date and time along with username
  2783. ***************
  2784. *** 36,42 ****
  2785.   
  2786.   #include <stdio.h>
  2787.   #include <pwd.h>
  2788. - #include <ctype.h>
  2789.   #include <fcntl.h>
  2790.   
  2791.   #include "defs.h"
  2792. --- 48,53 ----
  2793. ***************
  2794. *** 187,194 ****
  2795.       register int i = 0, j = 0;
  2796.   
  2797.       while (str[i] != '\0') {
  2798. !       while ((isupper(str[i]) ? tolower(str[i]) : str[i]) ==
  2799. !          (isupper(pat[j]) ? tolower(pat[j]) : pat[j])) {
  2800.           i++; j++;
  2801.           if (pat[j] == '\0') 
  2802.             return(TRUE);
  2803. --- 198,204 ----
  2804.       register int i = 0, j = 0;
  2805.   
  2806.       while (str[i] != '\0') {
  2807. !       while (tolower(str[i]) == tolower(pat[j])) {
  2808.           i++; j++;
  2809.           if (pat[j] == '\0') 
  2810.             return(TRUE);
  2811.  
  2812. Index: hdrs/defs.h
  2813. Prereq: 5.27
  2814. *** ../elm2.4/hdrs/defs.h    Sat May  8 15:41:18 1993
  2815. --- hdrs/defs.h    Sun Aug 22 22:46:52 1993
  2816. ***************
  2817. *** 1,8 ****
  2818.   
  2819. ! /* $Id: defs.h,v 5.27 1993/05/08 19:41:13 syd Exp $ */
  2820.   
  2821.   /*******************************************************************************
  2822. !  *  The Elm Mail System  -  $Revision: 5.27 $   $State: Exp $
  2823.    *
  2824.    *             Copyright (c) 1988-1992 USENET Community Trust
  2825.    *             Copyright (c) 1986,1987 Dave Taylor
  2826. --- 1,8 ----
  2827.   
  2828. ! /* $Id: defs.h,v 5.32 1993/08/23 02:46:51 syd Exp $ */
  2829.   
  2830.   /*******************************************************************************
  2831. !  *  The Elm Mail System  -  $Revision: 5.32 $   $State: Exp $
  2832.    *
  2833.    *             Copyright (c) 1988-1992 USENET Community Trust
  2834.    *             Copyright (c) 1986,1987 Dave Taylor
  2835. ***************
  2836. *** 14,19 ****
  2837. --- 14,55 ----
  2838.    *
  2839.    *******************************************************************************
  2840.    * $Log: defs.h,v $
  2841. +  * Revision 5.32  1993/08/23  02:46:51  syd
  2842. +  * Test ANSI_C, not __STDC__ (which is not set on e.g. AIX).
  2843. +  * From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  2844. +  *
  2845. +  * Revision 5.31  1993/08/23  02:45:29  syd
  2846. +  * The macro ctrl(c) did not work correctly for a DEL character
  2847. +  * neither did it make the backward mapping from a control char
  2848. +  * to the letter that is normally used with an up-arrow prefix
  2849. +  * to represent the control character.
  2850. +  * From: Jukka Ukkonen <ukkonen@csc.fi>
  2851. +  *
  2852. +  * Revision 5.30  1993/08/03  19:28:39  syd
  2853. +  * Elm tries to replace the system toupper() and tolower() on current
  2854. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2855. +  * collide during linking with routines in isctype.o.  This patch adds
  2856. +  * a Configure test to determine whether replacements are really needed
  2857. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2858. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2859. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2860. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2861. +  * were dropped.
  2862. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2863. +  *
  2864. +  * Revision 5.29  1993/08/03  19:05:33  syd
  2865. +  * When STDC is used on Convex the feof() function is defined as
  2866. +  * a true library routine in the header files and moreover the
  2867. +  * library routine also leaks royally. It returns always 1!!
  2868. +  * So we have to use a macro. Convex naturally does not provide
  2869. +  * you with one though if you are using a STDC compiler. So we
  2870. +  * have to include one.
  2871. +  * From: Jukka Ukkonen <ukkonen@csc.fi>
  2872. +  *
  2873. +  * Revision 5.28  1993/07/20  02:59:53  syd
  2874. +  * Support aliases both on 64 bit and 32 bit machines at the same time.
  2875. +  * From: Dan Mosedale <mosedale@genome.stanford.edu>
  2876. +  *
  2877.    * Revision 5.27  1993/05/08  19:41:13  syd
  2878.    * make it now depend on mallocvoid
  2879.    *
  2880. ***************
  2881. *** 138,143 ****
  2882. --- 174,180 ----
  2883.   
  2884.   
  2885.   #include <sys/types.h>    /* for fundamental types */
  2886. + #include <stdio.h>    /* Must get the _IOEOF flag for feof() on Convex */
  2887.   #include "../config.h"
  2888.   #include "sysdefs.h"    /* system/configurable defines */
  2889.   
  2890. ***************
  2891. *** 311,318 ****
  2892.   #define DECEMBER    11
  2893.   
  2894.   #define equal(s,w)    (strcmp(s,w) == 0)
  2895. ! #define min(a,b)    a < b? a : b
  2896. ! #define ctrl(c)            c - 'A' + 1    /* control character mapping */
  2897.   #define plural(n)    n == 1 ? "" : "s"
  2898.   #define lastch(s)    s[strlen(s)-1]
  2899.   #define ifmain(a,b)    (inalias ? b : a)
  2900. --- 348,363 ----
  2901.   #define DECEMBER    11
  2902.   
  2903.   #define equal(s,w)    (strcmp(s,w) == 0)
  2904. ! #define min(a,b)    (a) < (b) ? (a) : (b)
  2905. ! /*
  2906. !  *  Control character mapping like "c - 'A' + 1" does not work
  2907. !  *  correctly for a DEL. Neither does it allow mapping from
  2908. !  *  a control character to the letter that is normally used with
  2909. !  *  an up-arrow prefix to represent the control char.
  2910. !  *  The correct mapping should be done like this...
  2911. !  */
  2912. ! #define ctrl(c)            (((c) + '@') & 0x7f)
  2913.   #define plural(n)    n == 1 ? "" : "s"
  2914.   #define lastch(s)    s[strlen(s)-1]
  2915.   #define ifmain(a,b)    (inalias ? b : a)
  2916. ***************
  2917. *** 482,487 ****
  2918. --- 527,549 ----
  2919.       char mailx_status[WLEN];/** mailx status flags (RO...)    **/
  2920.          };
  2921.   
  2922. + #ifdef __alpha
  2923. + #define int32 int
  2924. + #else
  2925. + #define int32 long
  2926. + #endif
  2927. + struct alias_disk_rec {
  2928. +     int32 status;            /* DELETED, TAGGED, VISIBLE, ...     */
  2929. +     int32 alias;            /* alias name                        */
  2930. +     int32 last_name;        /* actual personal (last) name       */
  2931. +     int32 name;            /* actual personal name (first last) */
  2932. +     int32 comment;            /* comment, doesn't show in headers  */
  2933. +     int32 address;            /* non expanded address              */
  2934. +     int32 type;            /* mask-- sys/user, person/group     */
  2935. +     int32 length;            /* length of alias data on file      */
  2936. +        };
  2937.   struct alias_rec {
  2938.       int   status;            /* DELETED, TAGGED, VISIBLE, ...     */
  2939.       char  *alias;            /* alias name                        */
  2940. ***************
  2941. *** 530,535 ****
  2942. --- 592,611 ----
  2943.   #    include <string.h>
  2944.   #  endif
  2945.   #endif
  2946. + #ifdef    __convex__
  2947. + /*
  2948. +  *  Nice work Convex people! Thanks a million!
  2949. +  *  When STDC is used feof() is defined as a true library routine
  2950. +  *  in the header files and moreover the library routine also leaks
  2951. +  *  royally. (It returns always 1!!) Consequently this macro is
  2952. +  *  unavoidable.)
  2953. +  */
  2954. + #  ifndef   feof
  2955. + #    define   feof(p)    ((p)->_flag&_IOEOF)
  2956. + #  endif
  2957. + #endif
  2958.   #ifndef ANSI_C   /* ANSI puts these in string.h */
  2959.   char *index(), *rindex(); /* names will be traslated by define in config.h */
  2960.   char *strtok(), *strcpy(), *strcat(), *strncpy(); /* more in string.h in ANSI */
  2961. ***************
  2962. *** 573,583 ****
  2963.   
  2964.   #ifdef POSIX_SIGNALS
  2965.   #define signal posix_signal
  2966. ! #ifdef __STDC__
  2967.   extern SIGHAND_TYPE (*posix_signal(int, SIGHAND_TYPE (*)(int)))(int);
  2968. ! #else    /* __STDC__ */
  2969.   extern SIGHAND_TYPE (*posix_signal())();
  2970. ! #endif    /* __STDC__ */
  2971.   #else    /* POSIX_SIGNALS */
  2972.   #ifdef SIGSET
  2973.   #define signal sigset
  2974. --- 649,659 ----
  2975.   
  2976.   #ifdef POSIX_SIGNALS
  2977.   #define signal posix_signal
  2978. ! #if ANSI_C
  2979.   extern SIGHAND_TYPE (*posix_signal(int, SIGHAND_TYPE (*)(int)))(int);
  2980. ! #else    /* ANSI_C */
  2981.   extern SIGHAND_TYPE (*posix_signal())();
  2982. ! #endif    /* ANSI_C */
  2983.   #else    /* POSIX_SIGNALS */
  2984.   #ifdef SIGSET
  2985.   #define signal sigset
  2986. ***************
  2987. *** 587,592 ****
  2988. --- 663,680 ----
  2989.   #endif /* SIGSET */
  2990.   #endif /* POSIX_SIGNALS */
  2991.   
  2992. + /*
  2993. +  * Some of the old BSD ctype conversion macros corrupted characters.
  2994. +  * We will substitute our own versions if required.
  2995. +  */
  2996. + #include <ctype.h>
  2997. + #ifdef BROKE_CTYPE
  2998. + # undef  toupper
  2999. + # define toupper(c)    (islower(c) ? ((c) - 'a' + 'A') : (c))
  3000. + # undef  tolower
  3001. + # define tolower(c)    (isupper(c) ? ((c) - 'A' + 'a') : (c))
  3002. + #endif
  3003.   /*
  3004.    * The "safe_malloc_fail_handler" vector points to a routine that is invoked
  3005.    * if one of the safe_malloc() routines fails.  At startup, this will point
  3006.  
  3007.